Skip to content

Commit

Permalink
udevd.c: set udev children_max according to CPU count
Browse files Browse the repository at this point in the history
Setting children_max according to RAM leads to too much concurrent I/O.
  • Loading branch information
haraldh committed Mar 25, 2013
1 parent c5962bd commit 8cc3f8c
Showing 1 changed file with 6 additions and 29 deletions.
35 changes: 6 additions & 29 deletions src/udev/udevd.c
Original file line number Diff line number Diff line change
Expand Up @@ -879,29 +879,6 @@ static void static_dev_create_from_modules(struct udev *udev)
fclose(f);
}

static int mem_size_mb(void)
{
FILE *f;
char buf[4096];
long int memsize = -1;

f = fopen("/proc/meminfo", "re");
if (f == NULL)
return -1;

while (fgets(buf, sizeof(buf), f) != NULL) {
long int value;

if (sscanf(buf, "MemTotal: %ld kB", &value) == 1) {
memsize = value / 1024;
break;
}
}

fclose(f);
return memsize;
}

static int systemd_fds(struct udev *udev, int *rctrl, int *rnetlink)
{
int ctrl = -1, netlink = -1;
Expand Down Expand Up @@ -1278,13 +1255,13 @@ int main(int argc, char *argv[])
}

if (children_max <= 0) {
int memsize = mem_size_mb();
cpu_set_t cpu_set;

/* set value depending on the amount of RAM */
if (memsize > 0)
children_max = 16 + (memsize / 8);
else
children_max = 16;
children_max = 8;

if (sched_getaffinity(0, sizeof (cpu_set), &cpu_set) == 0) {
children_max += CPU_COUNT(&cpu_set) * 2;
}
}
log_debug("set children_max to %u\n", children_max);

Expand Down

0 comments on commit 8cc3f8c

Please sign in to comment.