Sunday, July 30, 2006
Lintian patch for LSB-compliance (SoC 2006)
A patch for lintian to check runtime dependency in the init scripts is now availabe at the project webpage. It proposes modifications to two files in the lintian/checks directory and was already tested. It reports incomplete and missing dependency information as well as individual warnings per headers missing. It was reported as a patch for the #377740 bug previously reported.
Saturday, July 22, 2006
Now preloading worked (SoC 2006)
One again I've tried the preload program from Behdad Esfahbod (a result from SoC2005) but this time positive results. The cause of the difference might have been an incorrect deinstallation of parallel booting (insserv/startpar). The boot time showed a 2 second time improvement. The preload.conf parameters mapprefix and exeprefix were set to empty such that all files would be accepted. The results were compared with mapprefix being set to the directories used by some of the init scripts (strace -f initscript), adjusting the quantum time of preload (cycle parameter) and changing the position of the initscript to start just after hwclockfirst.sh. The results were the same: a 2 second time improvent. See the bootcharts here.
Thursday, July 20, 2006
Now Parallel execution works better (SoC 2006)
A bug was found when doing parallel execution with startpar. The scripts seem to have been executing twice and it is being fixed by Petter Reinholdtsen. To compare the effect of the bug, the parallel execution boot time using startpar was compared with the one using "shell". The main difference between using CONCURRENCY=startpar and CONCURRENCY=shell in /etc/default/rcS is that the latter doesn't care about the order in which messages are printed to the screen.
The issue made me try things again and this time I didn't accept the default script reorder from insserv. Insserv seems to have the following reordering issues:
a)repeates scripts in /etc/rc2.d that were already started in /etc/rcS.d
b)doesn't reorder /etc/rcS.d
c)puts stop-bootlogd near the beginning in /etc/rc2.d and bootlogd while sysklogd and klogd are at the middle.
d)includes scripts present in /etc/init.d that were not previously executed at boot time.
Issues (a) and (c) were corrected and the boot time was 2 seconds faster than without insserv(See bootcharts).
While testing parallel execution, using CONCURRENCY=startpar, there was no improvement (the bug hasn't been fixed) and while testing with CONCURRENCY=shell there was a 4 second time improvement from the original system without insserv. (See bootcharts)
The issue made me try things again and this time I didn't accept the default script reorder from insserv. Insserv seems to have the following reordering issues:
a)repeates scripts in /etc/rc2.d that were already started in /etc/rcS.d
b)doesn't reorder /etc/rcS.d
c)puts stop-bootlogd near the beginning in /etc/rc2.d and bootlogd while sysklogd and klogd are at the middle.
d)includes scripts present in /etc/init.d that were not previously executed at boot time.
Issues (a) and (c) were corrected and the boot time was 2 seconds faster than without insserv(See bootcharts).
While testing parallel execution, using CONCURRENCY=startpar, there was no improvement (the bug hasn't been fixed) and while testing with CONCURRENCY=shell there was a 4 second time improvement from the original system without insserv. (See bootcharts)
Wednesday, July 19, 2006
Meeting with my mentor in Dublin (SoC 2006)
In one of this extremely weird sunny and warm days in Dublin, I've met my google SoC mentor Petter Reinholdtsen. We've discussed several issues of the project and here are the main points:
1. Some small issues in the LSB compliance list needed to be corrected. Some packages didn't showed their package. It was solved and now all the init-scripts have the package they belong to. See LSB-compliance list.
2. It was important to compare the results from two different ways to use dash instead of bash in the init-scripts. See discussion in debian-devel. The two approaches are:
a) make /bin/sh point to /bin/dash - using the procedure described in /usr/share/doc/bash/README.Debian.gz, we obtain a time reduction of 4 seconds.
b) change #!/bin/sh for #!/bin/dash in the init-scripts - using the substitution function of sed, the initscripts were changed to use dash. A reduction of 2 seconds was obtained.
The bootcharts are available here. The difference should be because some programs are still using bash as just the first line of the initscripts was changed.
1. Some small issues in the LSB compliance list needed to be corrected. Some packages didn't showed their package. It was solved and now all the init-scripts have the package they belong to. See LSB-compliance list.
2. It was important to compare the results from two different ways to use dash instead of bash in the init-scripts. See discussion in debian-devel. The two approaches are:
a) make /bin/sh point to /bin/dash - using the procedure described in /usr/share/doc/bash/README.Debian.gz, we obtain a time reduction of 4 seconds.
b) change #!/bin/sh for #!/bin/dash in the init-scripts - using the substitution function of sed, the initscripts were changed to use dash. A reduction of 2 seconds was obtained.
The bootcharts are available here. The difference should be because some programs are still using bash as just the first line of the initscripts was changed.
Saturday, July 15, 2006
Automatic update for the LSB compliance list (SoC 2006)
We have published a list for LSB-compliance in here. The script to create it was now modified to be easily updated automatically considering changes in the initscript files and new reported bugs. It will also consider special cases like with the scripts bootlogd and hostname.sh that wouldn't normally be considered as LSB compliant. The scripts are available under the GNU license at the project repository.
Tuesday, July 11, 2006
testing ubuntu's readahead (SoC2006)
The base distribution I'm using for Sid changed slightly by installing ssh. There was no boot time difference. The new base bootchart (same time 49 sec) is here.
Based on a discussion in initscripts-ng-devel between Petter Reinholdtsen and Erich Schubert, I decided to try ubuntu's readahead to see if we will get a better or worst boot time. After installing ubuntu's readahead 1.0.1-2 but noticed not time difference. No difference was obtained by changing the boot order (S39 to S19 in rcS.d) nor by adding files read at /etc/readahead/readahead. The bootchart is here
Also tried the newer readahead from ubuntu readahead 0.20050517.0220-0ubuntu3 but now with a loss of 1 second. This includes two scripts S01readahead and S39readahead-desktop in rcS.d and S99stop-readahead in rc2.d. The bootchart is here
Next I'll try to analyze the SUSE static preload.
Besides I filed an bug (377941) to initramfs-tool I had with installing Etch on my laptop with a usb harddisk. Tried adding sleep 5 to /usr/share/initramfs-tools/scripts/init-premount/udev, then dpkg-reconfigure linux-image-.... but still fails :(
Based on a discussion in initscripts-ng-devel between Petter Reinholdtsen and Erich Schubert, I decided to try ubuntu's readahead to see if we will get a better or worst boot time. After installing ubuntu's readahead 1.0.1-2 but noticed not time difference. No difference was obtained by changing the boot order (S39 to S19 in rcS.d) nor by adding files read at /etc/readahead/readahead. The bootchart is here
Also tried the newer readahead from ubuntu readahead 0.20050517.0220-0ubuntu3 but now with a loss of 1 second. This includes two scripts S01readahead and S39readahead-desktop in rcS.d and S99stop-readahead in rc2.d. The bootchart is here
Next I'll try to analyze the SUSE static preload.
Besides I filed an bug (377941) to initramfs-tool I had with installing Etch on my laptop with a usb harddisk. Tried adding sleep 5 to /usr/share/initramfs-tools/scripts/init-premount/udev, then dpkg-reconfigure linux-image-.... but still fails :(
More bug reports and benchmark (SoC2006)
Yesterday I filed a bug report for lintian as it doesn't check for LSB compliance. Many scripts would be fixed at the moment we get an LSB check in lintian and normally we will be providing them with a patch for it with our Deliverable 5 in a few weeks. Bug report #377740
I'm installing sid in my laptop --originally-- to use as benchmarking for the boot process. The installation procedure was the same as the one explained in the project webpage for sid except that it also includes the Laptop package subset. As I'm using a usb harddisk, it seems there is a problem at the boottime as /dev/sda1 takes to long to be detected and when root wants to mount it hasn't been detected yet. I currently skip this problem this by doing CTRL-S at the beginning to give it more time but this won't make a good boot process benchmark.
New bug reports were filed:
alsa-base #377716
alsa-utils #377717
I'm installing sid in my laptop --originally-- to use as benchmarking for the boot process. The installation procedure was the same as the one explained in the project webpage for sid except that it also includes the Laptop package subset. As I'm using a usb harddisk, it seems there is a problem at the boottime as /dev/sda1 takes to long to be detected and when root wants to mount it hasn't been detected yet. I currently skip this problem this by doing CTRL-S at the beginning to give it more time but this won't make a good boot process benchmark.
New bug reports were filed:
alsa-base #377716
alsa-utils #377717
Saturday, July 08, 2006
LSB- howto, status list and check script (SoC 2006)
A guide for debian package maintainers to make the scripts LSB compliant is available in here. It is not a substitute of the LSB 3.1 but intends to be used as a quick reference to create LSB-compliant init-scripts.
The script to check the LSB compliance was changed to reflect the init script status according to:
+No LSB headers - If "### BEGIN INIT INFO" is not found.
+LSB compliance - If the headers Provides, Required-Start, Required-Stop, Default-Start and Default-Stop exist and have arguments. Besides, if Default-Start is equal to 0 or to 6, LSB compliance is satisfied only with Provides, Required-Start and Default-Start.
+Missing LSB headers in the other cases.
Finally, a list with the current LSB-compliance status of Debian init-scripts is available here. It was automatically generated using a modified version of the script mentioned above and includes a link to the bug report filed to correct the scripts. The aim of this webpage is to give an overview of the work that needs to be done in Debian for LSB compliance.
The script to check the LSB compliance was changed to reflect the init script status according to:
+No LSB headers - If "### BEGIN INIT INFO" is not found.
+LSB compliance - If the headers Provides, Required-Start, Required-Stop, Default-Start and Default-Stop exist and have arguments. Besides, if Default-Start is equal to 0 or to 6, LSB compliance is satisfied only with Provides, Required-Start and Default-Start.
+Missing LSB headers in the other cases.
Finally, a list with the current LSB-compliance status of Debian init-scripts is available here. It was automatically generated using a modified version of the script mentioned above and includes a link to the bug report filed to correct the scripts. The aim of this webpage is to give an overview of the work that needs to be done in Debian for LSB compliance.
Wednesday, July 05, 2006
Bug reports for packages with missing LSB headers (SoC2006)
Yesterday I started to prepare bug reports about missing LSB headers. Since then I reported:
-acpid script #376778
-atd script #376780
-bittorrent script #376944
-exim4 script #376953
-hotkey-setup script #376955
-inetd script #376956
-kdm script #376958
-lpr script #376960
-makedev script #376992
-nfs-common script #376976.
A summary of the bug reports with missing lsb headers can be found in here
Besides, we've raised the issue of some scripts missing dependencies in the bootclean init script and the missing Should-Start dependency of bootmisc.sh in the sysvinit-devel mailing list.
-acpid script #376778
-atd script #376780
-bittorrent script #376944
-exim4 script #376953
-hotkey-setup script #376955
-inetd script #376956
-kdm script #376958
-lpr script #376960
-makedev script #376992
-nfs-common script #376976.
A summary of the bug reports with missing lsb headers can be found in here
Besides, we've raised the issue of some scripts missing dependencies in the bootclean init script and the missing Should-Start dependency of bootmisc.sh in the sysvinit-devel mailing list.
Tuesday, July 04, 2006
Deliverable on line and LSB list
The second deliverable of the "Improve debian boot" project is available to check since yesterday night in the webpage. In this report, a comparison between the boot process of the debian releases from woody to sid is presented. Besides, the first hotspots are investigated.
On the other hand,I've updated the LSB compliance of the scripts in Sid and added some related bug reports to some of the scripts. Besides, I've worked on new bugs on the script for LSB compliance by checking with all the scripts.
btw, anybody interested on this project can always join us every day at irc.debian.org at the channel #pkg-sysvinit (Europe daytime normally :D ).
On the other hand,I've updated the LSB compliance of the scripts in Sid and added some related bug reports to some of the scripts. Besides, I've worked on new bugs on the script for LSB compliance by checking with all the scripts.
btw, anybody interested on this project can always join us every day at irc.debian.org at the channel #pkg-sysvinit (Europe daytime normally :D ).
Sunday, July 02, 2006
Preload status and back to bechmarking (SoC 2006)
I've went back to the subject of benchmarking Debian releases in order to prepare the second deliverable. It should be available tonight for review in the project webpage.
Besides, we are trying to explore how to make the debian package of preload to work properly such that we can notice any time improvement. The default configuration and with little variations show no time difference. Anybody out there knows about some examples of how to configure preload?
Besides, we are trying to explore how to make the debian package of preload to work properly such that we can notice any time improvement. The default configuration and with little variations show no time difference. Anybody out there knows about some examples of how to configure preload?