summaryrefslogtreecommitdiff
path: root/src/readahead
AgeCommit message (Collapse)Author
2013-04-05Use initalization instead of explicit zeroingZbigniew Jędrzejewski-Szmek
Before, we would initialize many fields twice: first by filling the structure with zeros, and then a second time with the real values. We can let the compiler do the job for us, avoiding one copy. A downside of this patch is that text gets slightly bigger. This is because all zero() calls are effectively inlined: $ size build/.libs/systemd text data bss dec hex filename before 897737 107300 2560 1007597 f5fed build/.libs/systemd after 897873 107300 2560 1007733 f6075 build/.libs/systemd … actually less than 1‰. A few asserts that the parameter is not null had to be removed. I don't think this changes much, because first, it is quite unlikely for the assert to fail, and second, an immediate SEGV is almost as good as an assert.
2013-04-03util: rename parse_usec() to parse_sec() sinds the default unit is secondsLennart Poettering
Internally we store all time values in usec_t, however parse_usec() actually was used mostly to parse values in seconds (unless explicit units were specified to define a different unit). Hence, be clear about this and name the function about what we pass into it, not what we get out of it.
2013-04-03util: rename write_one_line_file() to write_string_file()Lennart Poettering
You can write much more than just one line with this call (and we frequently do), so let's correct the naming.
2013-03-31Partially revert e62d8c394474Zbigniew Jędrzejewski-Szmek
The ~80 chars per line part wasn't well received.
2013-03-31ModernizationZbigniew Jędrzejewski-Szmek
Use _cleanup_ and wrap lines to ~80 chars and such.
2013-03-26readahead: cleanupsAuke Kok
- check for OOM - no need to use floats and round()
2013-03-26readahead: chunk on spinning mediaAuke Kok
Readahead has all sorts of bad side effects depending on your storage media. On rotating disks, it may be degrading startup performance if enough requests are queued spanning linearly over all blocks early at boot, and mount, blkid and friends want to insert reads to the start of these block devices after. The end result is that on spinning disks with ext3/4 that udev and mounts take a very long time, and nothing really happens until readahead is completely finished. This has the net effect that the CPU is almost entirely idle for the entire period that readahead is working. We could have finished starting up quite a lot of services in this time if we were smarter at how we do readahead. This patch sorts all requests into 2 second "chunks" and sub-sorts each chunk by block. This adds a single cross-drive seek per "chunk" but has the benefit that we will have a lot of the blocks we need early on in the boot sequence loaded into memory faster. For a comparison of how before/after bootcharts look (ext4 on a mobile 5400rpm 250GB drive) please look at: http://foo-projects.org/~sofar/blocked-tests/ There are bootcharts in the "before" and "after" folders where you should be able to see that many low-level services finish 5-7 seconds earlier with the patch applied (after).
2013-03-11Remove or indent #define GNU_SOURCEZbigniew Jędrzejewski-Szmek
It is only needed in files designed to be usable in standalone compilation. In those files the #ifdefinery is indented. When compiling in-tree, GNU_SOURCE is always defined, so remove one definition.
2013-02-14honor SELinux labels, when creating and writing config filesHarald Hoyer
Also split out some fileio functions to fileio.c and provide a SELinux aware pendant in fileio-label.c see https://bugzilla.redhat.com/show_bug.cgi?id=881577
2013-02-13Revert "log_error() if inotify_add_watch() fails"Lennart Poettering
This reverts commit 2826d14091e43ed3397d862dee79d09d0115c84e. We never should generate log messages from a library.
2013-02-13log_error() if inotify_add_watch() failsHarald Hoyer
[zj: Reworded message s/to watch/to add watch on/ to make it clear that it was the watch init action that failed, and not the "process of watching". I think this way it'll be clearer to people who don't know what inotify does.]
2013-01-03readahead: don't complain that we cannot precache symlinksLennart Poettering
http://lists.freedesktop.org/archives/systemd-devel/2012-December/007847.html
2012-11-22readahead: properly detect btrfs on SSDLennart Poettering
2012-10-22readahead: fix fd validity checkMichal Schmidt
https://bugzilla.redhat.com/show_bug.cgi?id=868603
2012-09-13readahead: use 20K instead of 16K as temporary request nr bumpLennart Poettering
2012-09-04missing: define name_to_handle_at on our own if it is missingLennart Poettering
2012-09-03readahead: a bit of reformattingLennart Poettering
2012-08-23readahead-analyze: don't call fclose on nullLukas Nykryn
2012-08-08fix a couple of issues found with llvm-analyzeLennart Poettering
2012-07-26log.h: new log_oom() -> int -ENOMEM, use itShawn Landden
also a number of minor fixups and bug fixes: spelling, oom errors that didn't print errors, not properly forwarding error codes, few more consistency issues, et cetera
2012-07-25use "Out of memory." consistantly (or with "\n")Shawn Landden
glibc/glib both use "out of memory" consistantly so maybe we should consider that instead of this. Eliminates one string out of a number of binaries. Also fixes extra newline in udev/scsi_id
2012-07-19use #pragma once instead of foo*foo #define guardsShawn Landden
#pragma once has been "un-deprecated" in gcc since 3.3, and is widely supported in other compilers. I've been using and maintaining (rebasing) this patch for a while now, as it annoyed me to see #ifndef fooblahfoo, etc all over the place, almost arrogant about the annoyance of having to define all these names to perform a commen but neccicary functionality, when a completely superior alternative exists. I havn't sent it till now, cause its kindof a style change, and it is bad voodoo to mess with style that has been established by more established editors. So feel free to lambast me as a crazy bafoon. v2 - preserve externally used headers
2012-07-03readahead: fix calculation of percentageLennart Poettering
2012-06-22journal: fix sd_journal_stream_fd()Lennart Poettering
2012-06-22readahead: minor code style fixesLennart Poettering
2012-06-22readahead: make sure to close pack file before exiting, to be valgrind cleanLennart Poettering
2012-06-21readahead: use log_error() for logging errorsLennart Poettering
2012-06-21readahead: make use of util.h's page_size() callLennart Poettering
2012-06-21readahead: merge three binaries into oneLennart Poettering
since the binaries share much of the same code and we better load only one binary instead of two from disk at early boot let's merge the three readahead binaries into one. This also allows us to drop a lot of duplicated code.
2012-06-05readahead: Add tool to analyze the contents of the pack file. v3.Auke Kok
This patch adds code to compile 'systemd-readahead-analyze' and install it into $bindir. Use this program to parse the contents of the readahead pack file, or an arbitrary pack file and display which files are listed in it, and how much of the files are requested to be readahead. This code is not new - it's partially taken from sreadahead (formerly maintained by Arjan van der Ven and me, and was originally written by me), and adapted with the right bits to parse the systemd readahead pack files, which are slightly different in format. v2 adds a common READAHEAD_PACK_FILE_VERSION used in all the code to provide a quick way to assure all these programs are always synchronized. v3 fixes the integer math.
2012-05-23readahead: avoid running of readahead services if readahead is already doneLennart Poettering
2012-05-23readahead: avoid activating the journal by accident, log directly to kmsgLennart Poettering
2012-05-04readahead: store inode numbers in pack fileLennart Poettering
If the inode nr for each file is available in the pack file we can easily detect replaced files (like they result from package upgrades) which we can then skip to readahead.
2012-05-04units: use OOMScoreAdjust= in the unit files to set OOM score adjustLennart Poettering
2012-05-04readhead: temporarily lower the kernel's read_ahead_kb setting while collectingLennart Poettering
While collecting readahead data we want to know exactly what userspace accesses unblurred by the kernel's read_ahead_kb. Hence lower this during collection, and raise it afterwards. This is mostly based on ideas and code by Auke Kok.
2012-04-24readahead: rather than checking for virtualization in the C code, use ↵Lennart Poettering
ConditionVirtualization= in the unit
2012-04-12relicense to LGPLv2.1 (with exceptions)Lennart Poettering
We finally got the OK from all contributors with non-trivial commits to relicense systemd from GPL2+ to LGPL2.1+. Some udev bits continue to be GPL2+ for now, but we are looking into relicensing them too, to allow free copy/paste of all code within systemd. The bits that used to be MIT continue to be MIT. The big benefit of the relicensing is that closed source code may now link against libsystemd-login.so and friends.
2012-01-21readahead: don't monopolize IO when replayingLennart Poettering
2012-01-12core: switch all log targets to go directly to the journal, instead via syslogLennart Poettering
2012-01-05build-sys: add stub makefiles to subdirsLennart Poettering
2012-01-05build-sys: move public header files into a dir of their ownLennart Poettering
2012-01-03readahead: bring export definition of sd-readahead in line with sd-daemonLennart Poettering
2011-12-31build-sys: make readahead and vconsole optionalLennart Poettering