cpu: change udev buffer size from default value to 512 KB 89/261289/3 accepted/tizen/unified/20210727.124552 submit/tizen/20210726.050348
authorINSUN PYO <insun.pyo@samsung.com>
Wed, 14 Jul 2021 08:00:09 +0000 (17:00 +0900)
committerINSUN PYO <insun.pyo@samsung.com>
Wed, 21 Jul 2021 00:57:27 +0000 (09:57 +0900)
Between udev_monitor_enable_receiving() and the start of g_main_loop, a lot of udev events accumulate, and G_IO_ERR occurs in udev.

In vim3 target, many udev events occur when booting.
========================================================
KERNEL[3947.849435] add      /kernel/slab/:atA-0000192/cgroup/dentry(660:storaged.service) (cgroup)
KERNEL[3947.849544] add      /kernel/slab/inode_cache/cgroup/inode_cache(660:storaged.service) (cgroup)
KERNEL[3947.851730] add      /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(660:storaged.service) (cgroup)
KERNEL[3947.851822] add      /kernel/slab/:t-0000256/cgroup/kmalloc-256(660:storaged.service) (cgroup)
KERNEL[3947.851964] add      /kernel/slab/:t-0000512/cgroup/kmalloc-512(660:storaged.service) (cgroup)
KERNEL[3947.852916] add      /kernel/slab/:tA-0000192/cgroup/cred_jar(660:storaged.service) (cgroup)
KERNEL[3947.852971] add      /kernel/slab/:t-0000128/cgroup/kmalloc-128(660:storaged.service) (cgroup)
KERNEL[3947.853031] add      /kernel/slab/proc_inode_cache/cgroup/proc_inode_cache(660:storaged.service) (cgroup)
KERNEL[3947.853760] add      /kernel/slab/:tA-0000896/cgroup/mm_struct(660:storaged.service) (cgroup)
KERNEL[3947.853807] add      /kernel/slab/:tA-0000176/cgroup/vm_area_struct(660:storaged.service) (cgroup)
KERNEL[3947.853831] add      /kernel/slab/:tA-0000064/cgroup/anon_vma_chain(660:storaged.service) (cgroup)
KERNEL[3947.853848] add      /kernel/slab/anon_vma/cgroup/anon_vma(660:storaged.service) (cgroup)
==============================================================

Default value of udev buffer: /proc/sys/net/core/rmem_default (212992 byte on vim3 target)

Change-Id: I810a4f872b23e0f4b8e3ed8b68cdb5915ce1b0a3

src/cpu/cpu-hotplug.c

index d4c4526..b9c7db6 100644 (file)
@@ -6,6 +6,8 @@
 #include "notifier.h"
 #include "file-helper.h"
 
+#define UDEV_MONITOR_BUFFER_SIZE (512 * 1024)
+
 struct cpu_hotplug {
        struct udev *udev;
        struct udev_monitor *mon;
@@ -88,6 +90,12 @@ static int monitor_cpus()
                return -1;
        }
 
+       if (udev_monitor_set_receive_buffer_size(ch.mon, UDEV_MONITOR_BUFFER_SIZE) < 0) {
+               _E("cpu-hotplug: change monitor buffer size failed");
+               ret = -1;
+               goto monitor_failed;
+       }
+
        if (udev_monitor_filter_add_match_subsystem_devtype(ch.mon, "cpu", NULL) < 0) {
                _E("cpu-hotplug: creating monitor add match subsystem failed");
                ret = -1;