swsusp2 && kernel 2.6.18 && debian sarge 3.1

Здесь обсуждаются все вопросы, не попадающие под другие категории
Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

Llama, спасибо, кошерная идея, кста :)
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
kif0rt
Неотъемлемая часть форума
Сообщения: 1371
Зарегистрирован: 03 ноя 2004, 01:49
Откуда: Минск

Сообщение kif0rt »

Стоп .. что значит системный своп нельзя использовать. У меня был один своп. И я его использовал и для суспенда и как своп собственно ... или я не так понял ?! А что пишет dmesg | grep suspend ??
Ненасилие ещё никому не помогало
Trying is the first step towards failure (c) Homer Simpson

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

kif0rt, похоже, что можно. Я ошибси. Дело не в свопе. Я уже не знаю, в чём, собсна дело...

Народ, у кого эта хрень работает, расскажите, как происходит процесс саспенда через swsusp2... hibernate 1.94 у меня теперь работает, но как-то странно. Инициирует процесс саспенда, выплёвывает вот это

Код: Выделить всё

suspend2: 2.2.8: Initiating a software suspend cycle.
Freezing processes 
А дальше ничего не происходит. Питание с дисков не убирается. Система не отключается, не смотря на powerdownmethod = 5.

В логе hibernate пишет:

Код: Выделить всё

Starting suspend at Сбт Ноя 11 02:53:02 EET 2006
hibernate: [01] Executing CheckLastResume ...
hibernate: [01] Executing CheckRunlevel ...
hibernate: [01] Executing LockFileGet ...
hibernate: [01] Executing NewKernelFileCheck ...
hibernate: [10] Executing EnsureSwsusp2Capable ...
hibernate: [11] Executing XHacksSuspendHook1 ...
hibernate: [20] Executing MiscLaunchAuxFunc1 ...
Executing echo "Good night!"...
Good night!
hibernate: [59] Executing RemountXFSBootRO ...
hibernate: [89] Executing SaveKernelModprobe ...
hibernate: [91] Executing ModulesUnloadBlacklist ...
Some modules failed to unload: nvidia
hibernate: [95] Executing XHacksSuspendHook2 ...
hibernate: [97] Executing ChangeToSwsuspVT ...
hibernate: [98] Executing CheckRunlevel ...
hibernate: [98] Executing FullSpeedCPUSuspend ...
hibernate: [98] Executing Swsusp2ConfigSet ...
hibernate: [99] Executing DoSwsusp2 ...
hibernate: Activating suspend ...
Видно, что он не может выгрузить модуль nvidia. Раньше ещё не мог найти компрессор, но компрессор я выставил в none. Вопрос, может ли невыгруженный модуль как-то сильно помешать? Несмотря на аргументы -k -f для hibernate?

Конфиги:suspend2.conf - он у меня используется как метод по умолчанию

Код: Выделить всё

# Example suspend2.conf file.
#
# See hibernate.conf(5) for help on the configuration items.
#
# NOTE: Suspend2 is an improved version of suspend-to-disk which currently
#       requires patching your kernel. For more information, see www.suspend2.net
#
#       If you do not wish to patch your kernel but still be able to suspend to
#       disk, see disk.conf instead.

### suspend2 (for Software Suspend 2)
UseSuspend2 yes
Reboot no
EnableEscape yes
DefaultConsoleLevel 1
#Compressor lzf
Compressor none
Encryptor none
# ImageSizeLimit 200

## useful for initrd usage:
SuspendDevice swap:/dev/hdb5

## Powerdown method - 3 for suspend-to-RAM, 4 for ACPI S4 sleep, 5 for poweroff
PowerdownMethod 5

## Any other /proc/software_suspend setting can be set like so:
# ProcSetting expected_compression 50

## Or traditionally like this:
# Suspend2AllSettings 0 0 2056 65535 5

## Or even from the results of hibernate --save-settings with this:
# Suspend2AllSettingsFile /etc/hibernate/suspend-settings.conf

## For filewriter:
# FilewriterLocation /suspend_file 1000
# VerifyFilewriterResume2 yes

## Specify a userui like this:
# ProcSetting userui_program /usr/local/sbin/suspend2ui_text

# Scale CPU to full speed to make sure we suspend as fast as possible.
FullSpeedCPU yes

Include common.conf

Код: Выделить всё

devel:/home/f0x# cat /etc/hibernate/common.conf
# Configuration options common for suspending to disk or RAM.
# Options are not case sensitive.
#
# See hibernate.conf(5) for help on the configuration items.

##############################################################################
### Some global settings
##############################################################################

Verbosity 1
LogFile /var/log/hibernate.log
LogVerbosity 1
AlwaysForce yes
AlwaysKill yes

##############################################################################
### Scriptlets
###   Scriptlets provide support for doing all sorts of things before and after
###   suspending. The defaults settings here should work for most people, but
###   you may wish to edit these to taste. Consult "hibernate -h" for help on
###   the configuration settings.
##############################################################################

### clock
SaveClock restore-only

# see http://bugs.debian.org/317479
RemountXFSBoot yes

### lilo
EnsureLILOResumes yes

### misclaunch
OnSuspend 20 echo "Good night!"
OnResume 20 echo "Good morning!"

### modules
UnloadBlacklistedModules yes
LoadModules auto

SwitchToTextMode yes
Из лога kern.log при загрузке с перегенерированным initrd

Код: Выделить всё

Nov 11 15:52:23 localhost kernel: Suspend2 2.2.8: Swapwriter: Signature found.
Nov 11 15:52:23 localhost kernel: Suspend2 2.2.8: Resuming enabled.
Nov 11 15:52:23 localhost kernel: Suspend2 2.2.8: Normal swapspace found.
Nov 11 15:52:23 localhost kernel: Suspend2 2.2.8: No image found.
Nov 11 15:52:23 localhost kernel: Suspend2 2.2.8: Read image returned -61.
оно опять не может прочитать имидж... Возможно, из-за того, что процесс саспеда не был доведён до конца? Но он по ходу и не доходит до конца сам по себе. Останавливается на freezing processes и всё. Жду ~5 минут, успеваю сходить покурить - прихожу - картина 1:1 та же, что была... Помогает только SysRq + O
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

red f0x, для начала попробуй без nvidia - этот модуль. как и все пропиетарные поделки, малопредсказуем.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

Llama, абсолютно однофигственно - что с nvidia, что без. Пробовал удалять его - такая же херня.
Короче, спасибо ещё раз всем ответившимся, но боюсь, придётся забить и всё это останется тайной для меня, ибо уже не знаю, в какую сторону думать :cry:
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

Выяснилось ещё кое-что, впрочем, это всё равно мало на что влияет в моём случае, ибо не понимаю сути происходящего... Так вот, впаял я в ядро PM_DEBUG, потом сделал:
echo 1 > /sys/power/suspend2/freezer_test
echo 6 > /sys/power/suspend2/user_interface/default_console_level
echo > /sys/power/suspend2/do_suspend

В ответ система выдала следующее:

Код: Выделить всё

Suspend2 2.2.8: Initiating sofware suspend cycle.
Freezing processes
Stopping tasks:============================================================Freezing bdev...===========================Freezing threads...=======================
   stopping tasks timed out after 20 seconds (2 tasks remaining)
   pktgen/0
   syslogd
Restarting tasks... <6> Strange, syslogd not stopped
Done
[...]
Restarting tasks... <6> Strange, init not stopped
Done
Все последующие попытки сказать echo > /sys/power/suspend2/do_suspend приводят к тому же, правда там варьируется число тасков, которые не были заморожены, иногда бывает просто pktgen/0. Из прочитанного в Documentation/power/suspend2.txt я так понял, что если ядру не удаётся заморозить все таски, то имидж памяти просто не сбрасывается на своп и процесс саспенда не происходит. Вот почему ядро не могло найти образ на свопе... Потому что его там никто не сохранял. Странно, что ядро не восстанавливает работоспособный котекст и всё что можно делать, это пытаться и дальше сделать саспенд в надежде, что ядру удастся заморозить все задачи и потоки или сделать шатдаун через SysRq + O. Почему не может быть заморожен syslogd - абсолютно непонятно. Причину нашёл, но как её устранить, уже точно не знаю.
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

Поднял эту древнюю тему ибо обнаружил ещё одно занятное обстоятельство. Не хотелось бы делать поспешных выводов, но... Похоже, что xfs (в смысле, ФС, а не фонт-сервер :) ) не совместима с suspend(2). При попытке сделать саспенд (ядро 2.6.20, патч suspend2 - 2.2.9.10, hibernate - 1.93, файловая система - xfs) получаем жалобу на то, что xfssyncd not stopped. На самом деле, в коде (fs/xfs/linux-2.6/xfs_super.c::xfssyncd() - занимается синхронизацией ФС, как явствует из названия ) этот поток не устанавливает никаких PF_NOFREEZE и не вызывает try_to_freeze(). В общем, не знаю, как отнестись к этой занятной багофиче, но очень похоже, что просто не судьба... :?

Есть одна безумная идея - вставить в xfssyncd():

Код: Выделить всё

current->flags |= PF_NOFREEZE;
Но это уже скорее от безысходности. В принципе, такую правку вполне таки можно сделать, но кто даст гарантию, что поток будет вести себя тихо после слива имиджа системы? И если не будет, то чем это всё может обернуться? Кстати, интересная трабла.

Гугл молчит, как румынский партизан...

Чтобы подтвердить или опровергнуть мои догадки, народ, поделитесь, пожалуйста, статистикой - у кого ФС - xfs и при этом работает suspend или suspend2.
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
kif0rt
Неотъемлемая часть форума
Сообщения: 1371
Зарегистрирован: 03 ноя 2004, 01:49
Откуда: Минск

Сообщение kif0rt »

Крайне интересное расследование ... Может описать траблу на suspend2.net в отдел багов ? У меня точно никогда суспенд на xfs не был .... Жаль, проверить не могу.
Ненасилие ещё никому не помогало
Trying is the first step towards failure (c) Homer Simpson

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

Нет, для начала я бы всё-таки хотел узнать, как оно у народа. А то не очень хорошо выйдет, шуметь попусту. Я ещё до конца не уверен, что это багофича. Но если подтвердится, надо будет тогда скорее на xfs жаловаться, ИМХО, а не на suspend2, т.к. выходит, что это проблема именно xfs из-за того, что она не пускает систему в suspend. Кстати, вот что касается ядрёного потока kpktgend (генератор пакетов - для тестирования сети), то тут уже даже немного странно, ИМХО, что он не поддерживает suspend. Как и следовало ожидать, в net/core/pktgen.c::pktgen_thread_worker() тоже не обнаружено никаких следов работы с заморозкой. Но тут проблема может быть устранена нехитрым workaround'ом - собрать pktgen в модуль и просто грузить его только тогда, когда он нужен (вообще, наиболее разумное решение, ибо нефиг ему на мой взгляд быть статически влинкованным в ядро). А когда не нужен - просто выгружать. Лично я его вообще выкинул, т.к. сейчас он мне уже совсем не нужен.
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Ответить