Rainer Weikusat <rweiku...@talktalk.net> wrote: > This is published here in the hope that it is useful for someting. > > The basic design of udev is similar to that of a forking server: There's > a parent process listening for uevents from the kernel on a netlink > socket which passes these events to worker processes for actual > processing. In case no idle worker process is found, a new one is > forked, up to a configurable limit (=> udevd(8)). > > One could argue if using more than one worker process is > actually sensible considering that uevent processing happens > mostly during startup and isn't going to take much time, > especially as this is a text book example of the simple, obvious > design one shouldn't be using if good performance is to be > achieved: The process which read the uevent from the socket is > already running and the CPU executing it has all the data in its > cache and kicking this to another CPU is a waste: The process/ > thread which received the event should process it and another > should be listening for more uevents while this is happening. > > A less-than-desirable side-effect of this model is that uevents causing > driver loads may end up loading the drivers in an order different from > the one the uevents came in.
So it's suboptimal - perhaps why the systemd guys are so fond of it ! It also explains the "random" ordering that the systemd guys have "fixed" by making the names even more unfriendly. Personally, I've always just edited /etc/udev/rules.d/70-persistent-net-rules* to give user-friendly names to my interfaces. Typically I use things like ethint, ethext, and so on - far better than trying to remember that eth0 is the internal port, eth1 is the outside, and so on. * Don't know if that's "standard" or a Debian packaging thing. _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng