Навеяно темой об уменьшении времени загрузки Убунты:
https://forum.ubuntu.ru/index.php?topic=55636.0Сделал график загрузки для своей системы с помощью bootchart и обнаружил, что приличную долю времени отнимает проверка дисков с файловой системой reiserfs. Причем на
графике явно видно, что при работе reiserfsck система некоторую долю времени просто ничего не делает (на графике - секунды 15-20 и 26-33).
"А не спит ли она?" - подумал я и скачал
исходники reiserfsck...
grep -n sleep *
сделал своё дело.
Вот вырезка из куска кода, ответственного за автоматическую проверку при запуске reiserfsck из fsck:
/* Do not allow buffers to be flushed after finishing to avoid another bitmap
* reading on mounting. */
static void fsck_sleep() {
int res;
res = fork();
if (res == -1) {
reiserfs_panic ("reiserfsck: Fork failed: %s", strerror(errno));
} else if (res == 0) {
/* Make the child process to sleep for 5 secs. */
sleep(5);
}
}
static int auto_check (reiserfs_filsys_t *fs) {
...
print_super_block (stdout, fs, fs->fs_file_name, fs->fs_super_bh, 1);
...
prepare_fs_for_check(fs);
...
check_fs_tree (fs);
...
clean_after_dma_check(fs->fs_dev, &dma_info);
fsck_sleep();
reiserfs_close (fs);
/* do not do anything else. */
exit (EXIT_OK);
...
}
Внимание вопрос: для чего в конце проверки вызывается fsck_sleep() ?Судя по коду fsck_sleep() - он как-раз и заставляет систему просто спать 5 секунд.
Очевидно, что ответ на поставленный вопрос заключается в комментарии к функции fsck_sleep(), но хотелось бы получить более внятное объяснение. У кого-то есть идеи?
Пользователь решил продолжить мысль 26 Мая 2009, 12:12:17:
Пересобрал reiserfsprogs без fsck_sleep(). Время загрузки соответственно уменьшилось на 10 секунд (5 секунд * 2 reiserfs раздела).
Еще нашел вот что:
https://bugs.launchpad.net/ubuntu/+source/reiserfsprogs/+bug/67301Оказывается, в OpenSuse уже давно это приметили и пропатчили.
Внимание следующий вопрос: что мне нужно сделать, чтобы сабжевый патч был применен к reiserfsprogs в Ubuntu?