summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-10-30hashmap: rewrite the implementationMichal Schmidt
This is a rewrite of the hashmap implementation. Its advantage is lower memory usage. It uses open addressing (entries are stored in an array, as opposed to linked lists). Hash collisions are resolved with linear probing and Robin Hood displacement policy. See the references in hashmap.c. Some fun empirical findings about hashmap usage in systemd on my laptop: - 98 % of allocated hashmaps are Sets. - Sets contain 78 % of all entries, plain Hashmaps 17 %, and OrderedHashmaps 5 %. - 60 % of allocated hashmaps contain only 1 entry. - 90 % of allocated hashmaps contain 5 or fewer entries. - 75 % of all entries are in hashmaps that use trivial_hash_ops. Clearly it makes sense to: - store entries in distinct entry types. Especially for Sets - their entries are the most numerous and they require the least information to store an entry. - have a way to store small numbers of entries directly in the hashmap structs, and only allocate the usual entry arrays when the direct storage is full. The implementation has an optional debugging feature (enabled by defining the ENABLE_HASHMAP_DEBUG macro), where it: - tracks all allocated hashmaps in a linked list so that one can easily find them in gdb, - tracks which function/line allocated a given hashmap, and - checks for invalid mixing of hashmap iteration and modification. Since entries are not allocated one-by-one anymore, mempools are not used for entries. Originally I meant to drop mempools entirely, but it's still worth it to use them for the hashmap structs. My testing indicates that it makes loading of units about 5 % faster (a test with 10000 units where more than 200000 hashmaps are allocated - pure malloc: 449±4 ms, mempools: 427±7 ms). Here are some memory usage numbers, taken on my laptop with a more or less normal Fedora setup after booting with SELinux disabled (SELinux increases systemd's memory usage significantly): systemd (PID 1) Original New Change dirty memory (from pmap -x 1) [KiB] 2152 1264 -41 % total heap allocations (from gdb-heap) [KiB] 1623 756 -53 %
2014-10-30test: adjust max load factor in test_hashmap_many()Michal Schmidt
A reimplementation of hashmaps will follow and it will use 0.8.
2014-10-30mempool: add a zeroing alloc functionMichal Schmidt
Add mempool_alloc0_tile(). It's like mempool_alloc_tile(), but it initializes the allocated tile's memory to zero.
2014-10-30util: add log2u(), log2u_round_up()Michal Schmidt
Two's logarithms for unsigned.
2014-10-30memfd: rename memfd.h to memfd-util.h to avoid any confusion with any libc ↵Lennart Poettering
provided headers
2014-10-30memfd: always use our internal utility functions where we have themLennart Poettering
2014-10-30memfd: drop memfd_get_name() as it is unusedLennart Poettering
2014-10-30update TODOLennart Poettering
2014-10-30journal: when sending huge log messages prefer memfds over temporary files ↵Lennart Poettering
in /dev/shm Previously when a log message grew beyond the maximum AF_UNIX/SOCK_DGRAM datagram limit we'd send an fd to a deleted file in /dev/shm instead. Because the sender could still modify the file after delivery we had to immediately copy the data on the receiving side. With memfds we can optimize this logic, and also remove the dependency on /dev/shm: simply send a sealed memfd around, and if we detect the seal memory map the fd and use it directly.
2014-10-30CODING_STYLE: clarify that we really should use O_CLOEXEC everywhereLennart Poettering
2014-10-30memfd: always create our memfds with CLOEXEC setLennart Poettering
We really shouldn't create fds ever that have the flag unset.
2014-10-30util: unify how we see srand()Lennart Poettering
2014-10-30util: don't block on getrandom()Lennart Poettering
2014-10-30sysusers: Preserve ownership and mode on /etc/passwd and friendsColin Guthrie
When running sysusers we would clobber file ownership and permissions on the files /etc/passwd, /etc/group and /etc/[g]shadow. This simply preserves the ownership and mode if existing files are found.
2014-10-30keymap: Ignore brightness keys on Dell Inspiron 1520 to avoid double eventsHans de Goede
On the Dell Inspiron 1520 both the atkbd and acpi-video input devices report an event for pressing the brightness up / down key-combos, resulting in user space seeing double events and increasing / decreasing the brightness 2 steps for each keypress. This hwdb snippet suppresses the atkbd events, making the Inspiron 1520 work like most modern laptops which emit brightness up / down events through acpi-video only. Reported by Pavel Malyshev <p.malishev@gmail.com> https://bugzilla.redhat.com/show_bug.cgi?id=1141525
2014-10-29zsh-completion: update start/restart completionsZbigniew Jędrzejewski-Szmek
Now zsh should behave the same for those two subcommands as bash.
2014-10-29bash-completion: use improved filtering to make things fasterZbigniew Jędrzejewski-Szmek
2014-10-29systemctl: obey --state in list-unit-filesZbigniew Jędrzejewski-Szmek
2014-10-29systemctl: let list-{units,unit-files } honour --typeZbigniew Jędrzejewski-Szmek
The docs don't clarify what is expected, but I don't see any reason why --type should be ignored. Also restucture the compund conditions into separate clauses for easier reading.
2014-10-29bash-completion: rework startable/restartable units once moreZbigniew Jędrzejewski-Szmek
I tried to use 'systemctl --all list-units' to filter unit files, but this always filters out unit files which are not loaded. We want to complete systemctl start with those units too, so this approach is not going to work. New version is rather slow, but hopefully correct.
2014-10-29missing.h: fix wrong __NR_getrandom syscall defDave Reisner
278 is vmsplice on x86_64. 318 is what we want: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/x86/syscalls/syscall_64.tbl
2014-10-30udev: path_id - update commentsKay Sievers
2014-10-30busctl: add new "capture" verb to record bus messages in libpcap compatible ↵Lennart Poettering
files, for dissection with wireshark
2014-10-29nspawn: ignore EEXIST when creating mount pointDave Reisner
A combination of commits f3c80515c and 79d80fc14 cause nspawn to silently fail with a commandline such as: # systemd-nspawn -D /build/extra-x86_64 --bind=/usr strace shows the culprit: [pid 27868] writev(2, [{"Failed to create mount point /build/extra-x86_64/usr: File exists", 82}, {"\n", 1}], 2) = 83
2014-10-29sd-bus: properly handle removals of non-existing matchesLennart Poettering
2014-10-29missing: no tabs please, we are britishLennart Poettering
2014-10-29update TODOLennart Poettering
2014-10-29missing: simplify memfd ifdefferyLennart Poettering
2014-10-29util: make use of the new getrandom() syscall if it is available when ↵Lennart Poettering
needing entropy Doesn't require an fd, and could be a bit faster, so let's make use of it, if it is available.
2014-10-29sd-rtnl: add bridge port rtnl attributes.Susant Sahani
Add bridge port attributes to sd-rtnl to configure via networkd.
2014-10-29sd-rtnl: add support to set packet family typeSusant Sahani
This patch adds functionality to set family type in the rtnl message for example PF_BRIDGE.
2014-10-29sd-rtnl: mark nested attributes with the NLA_F_NESTED flagTom Gundersen
The kernel mostly does not check this, but let's be consisntent and allways set it anyway. Based on patch from Susant Sahani.
2014-10-29sd-rtnl: fix reading of nla typeTom Gundersen
We must filter out the 'network-byteorder' and 'nested' flags.
2014-10-29networkd: add Patch of MTU discovery for IPIP and GRESusant Sahani
Add path of MTU disovery for IPIP and GRE Kind of tunnels
2014-10-29networkd: add back path of MTU discovery for SITSusant Sahani
2014-10-28NEWS: well, it's Options= now, not Discard=Lennart Poettering
2014-10-28build-sys: do not use "label" functions in libsystemd_sharedsystemd/v217Kay Sievers
2014-10-28update NEWSLennart Poettering
2014-10-28test: use assert_se() when testing tables so that we get a useful error when ↵Lennart Poettering
something fails
2014-10-28service: add missing state table entryLennart Poettering
2014-10-28core: send sigabrt on watchdog timeout to get the stacktraceUmut Tezduyar Lindskog
if sigabrt doesn't do the job, follow regular shutdown routine, sigterm > sigkill.
2014-10-28swap: don't add too many deps for swap files form /proc/swapLennart Poettering
2014-10-28udev: path_id - set supported_parent for well-known SCSI setupsKay Sievers
2014-10-28NEWS: fix typosRonny Chevalier
2014-10-28NEWS: updateKay Sievers
2014-10-28NEWSTom Gundersen
2014-10-28update NEWSLennart Poettering
2014-10-28update NEWSLennart Poettering
2014-10-28build-sys: bump version number in preparation for releaseLennart Poettering
2014-10-28build-sys: bump library versions in preparation for 217 releaseLennart Poettering