Dear Lennart, Thank you for your response. On 07/13/18 17:12, Lennart Poettering wrote: > On Do, 12.07.18 16:51, Paul Menzel wrote: >> Trying to decrease the start-up time, I noticed that `systemd-logind` >> probes devices in serial(?) (instead of parallel). >> >> From `manager_enumerate_buttons(Manager *m)` in `src/login/logind.c`: >> >> ``` >> udev_list_entry_foreach(item, first) { >> _cleanup_(udev_device_unrefp) struct udev_device *d = NULL; >> int k; >> >> d = udev_device_new_from_syspath(m->udev, udev_list_entry_get_name(item)); >> if (!d) >> return -ENOMEM; >> >> k = manager_process_button_device(m, d); >> if (k < 0) >> r = k; >> } >> ``` >> >> The macro is defined as below: >> >> ``` >> /** >> * udev_list_entry_foreach: >> * @list_entry: entry to store the current position >> * @first_entry: first entry to start with >> * >> * Helper to iterate over all entries of a list. >> */ >> #define udev_list_entry_foreach(list_entry, first_entry) \ >> for (list_entry = first_entry; \ >> list_entry != NULL; \ >> list_entry = udev_list_entry_get_next(list_entry)) >> ``` >> >> Is there a way to do that in parallel? > > systemd components are generally single threaded. Probing input > devices from systemd is unlikely to be a performance problem. I mean, > we don't process 10K devices here, but usually not more than 25 or > so... Also the code isn't really CPU or IO bound here, it just does a > few open() and ioctl() calls mostly. By the way, below are the timings from the journal. ``` $ journalctl -o short-precise -u systemd-logind.service -b -- Logs begin at Sat 2017-12-16 23:28:06 CET, end at Mon 2018-07-16 08:23:11 CEST. -- Jul 16 08:22:54.006190 kodi systemd[1]: Starting Login Service... Jul 16 08:22:54.103445 kodi systemd-logind[169]: New seat seat0. Jul 16 08:22:54.163713 kodi systemd[1]: Started Login Service. Jul 16 08:22:54.312955 kodi systemd-logind[169]: Watching system buttons on /dev/input/event1 (Power Button) Jul 16 08:22:54.514965 kodi systemd-logind[169]: Watching system buttons on /dev/input/event0 (Power Button) Jul 16 08:22:54.781082 kodi systemd-logind[169]: Watching system buttons on /dev/input/event2 (AT Translated Set 2 keyboard) ``` > Before spending time on optimizing anything like this: did you did > profiling on this, that shows clearly that this is performance > relevant at all? Do you have suggestions how to do that with systemd-logind? Kind regards, Paul -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 5174 bytes Desc: S/MIME Cryptographic Signature URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20180716/fff61a7f/attachment-0001.bin>