The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Интервью с разработчиком TuxOnIce, реализации "спящего режима" для Linux

19.06.2011 08:44

Александр Наталенко опубликовал интервью с Найджелом Каннингемом (Nigel Cunningham), разработчиком подсистемы TuxOnIce (до переименования - Suspend2) для Linux ядра, реализующей поддержку "спящего" режима со сбросом образа памяти на диск. Кроме проекта TuxOnIce, Найджел также участвует в разработке свободной среды дистанционного обучения Moodle и системы управления web-контентом Drupal, совмещая низкоуровневое программирование на языке Си с разработкой web-приложений на PHP. В повседневной практике Найджел использует Ubuntu Linux, в качестве рабочего окружения используется Xfce4 с панелью AWN.

Найджел разрабатывает TuxOnIce практически в одиночку, кроме людей временами присылающих патчи, основную работу (дизайн, разработка, поддержка и документация) выполняет один человек. Тем не менее, TuxOnIce хоть и медленно но совершенствуется, например, последний выпуск TuxOnIce 3.2 вышел месяц назад и кроме исправления ошибок содержал поддержку ZRam, позволяя сохранять как есть уже сжатые страницы памяти без их переупаковки.

На вопрос о возможной интеграции наработок TuxOnIce в состав основного Linux-ядра, Найджел ответил, что интеграция маловероятна, пока не найдется доброволец, способный рецензировать код и адаптировать его в соответствии с требованиями, предъявляемыми разработчиками Linux-ядра. В прошлом уже предпринималось несколько попыток повести код TuxOnIce в состав Linux-ядра, но все они оказались безуспешными.

При сравнении возможностей TuxOnIce с swsusp, интегрированным в Linux-ядро кодом поддержки спящего режима, отмечается отсутствие в swsusp поддержки многопоточной обработки и упреждающего чтения, а также невозможность использования для хранения дампа памяти вместо раздела подкачки обычных файлов. Кроме того, предлагается адаптировать код swsusp для работы в виде модуля, чтобы постоянно не занимать память ядра. Исторически в TuxOnIce первыми были реализованы многие новые возможности, такие как поддержка SMP, удобный интерфейс пользователя, поддержка файла подкачки, а также проверка времени последнего монтирования. Многие из этих возможностей до сих пор отсутствуют в swsusp.

  1. Главная ссылка к новости (http://lkml.org/lkml/2011/6/18...)
  2. OpenNews: Проект Suspend2 переименован в TuxOnIce
  3. OpenNews: Новый подход для мгновенного засыпания Linux
  4. OpenNews: Очередная попытка включения Suspend2 в стандартное Linux ядро
  5. OpenNews: Создатель Suspend2 уходит из проекта
  6. OpenNews: Suspend2 планируется поместить в 2.6.x ветку Linux ядра.
Лицензия: CC-BY
Тип: яз. русский / Практикум
Короткая ссылка: https://opennet.ru/30922-suspend
Ключевые слова: suspend, tixonice, linux, kernel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (39) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 10:37, 19/06/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    В стандартном саспенде оче не хватает сжатия для быстрой гибернации и сбрасывания памяти в файл потому что апгрейды памяти(да и держать 16 гиг свопа как то несуразно).
     
     
  • 2.2, postfactum (?), 11:19, 19/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    В стандартной гибернации не так давно уже появилось сжатие.
     
  • 2.3, pavlinux (ok), 12:40, 19/06/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Процедура сжатия вряд ли ускорит процесс засыпания.
     
     
  • 3.4, Аноним (-), 12:46, 19/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Должна. Проблем же в том, что память долго на диск сбрасывается/читается, проц не нагружен. Сжатие должно уменьшить размер путем нагрузки проца, на современных 4х ядерных это вполне допустимо, я считаю.
     
     
  • 4.5, Аноним (-), 15:07, 19/06/2011 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >на современных 4х ядерных это вполне допустимо

    на современных SSD это не нужно

     
     
  • 5.6, Аноним (-), 15:15, 19/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ссд редки, например. Да и всеравно, сколько на ссд будет записываться 3 гигабайта? 10 секунда в лучшем случае, не самое приятное ощущения в плане юзабилити.
     
     
  • 6.10, Аноним (-), 19:10, 19/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    У меня не самая быстра SSD (из первого поколения, 100мб/с чтение-запись), проц C2D 2.4, 4Gb RAM, засыпаю в файл (без свопа), сжатие LZO. Вермя засыпания/просыпания сильно зависит от занятой RAM, это может быть от пары секунд до 15-20.
     
     
  • 7.20, аноно (?), 08:12, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Лол, нафик так жить. У меня на SSD Mageia загружается за 12,5 секунд без всяких спящих режимов и плясок с конфигами.
     
     
  • 8.21, smile (??), 09:14, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    загрузка рабочего стола и всего что нужно, уже открытых документов, проектов ... текст свёрнут, показать
     
  • 3.7, pro100master (ok), 16:00, 19/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Но ускорит просыпание. Что важнее :)
     
  • 3.8, Аноним (-), 18:45, 19/06/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Процедура сжатия вряд ли ускорит процесс засыпания.

    Современные алгоритмы сжатия вполне могут ускорить запись на диск. Например LZO2 и QuickLZ на минимальных степенях сжатия могут запросто упереться в диск, при этом все еще давая сжатие в пару раз. Так можно запросто выиграть по времени. А уж распаковка LZ-алгоритмов нынче легко достигает гигабайтов в секунду и может даже обогнать стандартный memcpy() за счет меньшего объема в src при том же объеме dst.

     
     
  • 4.9, Аноним (-), 18:54, 19/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Что, в общем-то, и демонстрирует btrfs при включенном сжатии. Скорость возрастает.
     
     
  • 5.11, pavlinux (ok), 22:52, 19/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Что, в общем-то, и демонстрирует btrfs при включенном сжатии. Скорость возрастает.

    Теоретики млин...

     
     
  • 6.12, Аноним (-), 00:30, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    http://www.phoronix.com/scan.php?page=article&item=btrfs_lzo_2638&num=1a
     
     
  • 7.13, pavlinux (ok), 02:40, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > phoronix.com

    Хорошо хоть на сайт к Кашпировскому не послал. ;)

     
  • 7.14, pavlinux (ok), 04:15, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В двух словах:

    Учитывая то, что сжатые данные надо всё таки записать на диск, то скорость
    сжатия должна быть, минимум, в двое быстрее записи на этот диск.
    То есть, имея 100МБ/c диск, плющить надо со скоростью 200Мб/c (это округлённые цифры).

    А с точки зрения оптимальности по размеру, при скорости сжатия равной
    скорости диска, коэффициент не превысит 0.10 (между прочим не плохая цифра)
    И только уменьшая этот коэффициент получим прирост в скорости.


    ---

    Почему БТР быстро работает?!! Да потому-что 30% времени он них...я не делает.
    Точнее делает, но скорости от этого не прибавляется. Так что он компенсирует
    алгоритмами сжатия собственную заторможенность, так сказать, на чужой шее выехал.


     
     
  • 8.15, Eugeni Dodonov (ok), 05:23, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    root acergeni-x86_64 22 18 13 home eugeni dd if dev mem 124 lzop -1 ... текст свёрнут, показать
     
     
  • 9.16, pavlinux (ok), 06:07, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален Никанает code echo 3 proc sys vm drop_caches ... текст свёрнут, показать
     
     
  • 10.17, Eugeni Dodonov (ok), 06:13, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Да, а если посчитать количество байт что будет записано на диск после lzo vs без... текст свёрнут, показать
     
     
  • 11.18, pavlinux (ok), 06:26, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ну как видите 4 секунды Мы ж за время боремся А сплющил да, 1 1Гб почти до 2... текст свёрнут, показать
     
     
  • 12.22, Вова (?), 09:38, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Решил повторить, абсолютно другие данные без сжатия tupee vvk echo 3 proc ... текст свёрнут, показать
     
  • 12.23, Аноним (-), 09:51, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ошибка эксперимента в копировании всего dev mem, в то время как при hybernete н... текст свёрнут, показать
     
     
  • 13.26, Вова (?), 20:28, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    так и есть ... текст свёрнут, показать
     
  • 8.28, Аноним (-), 12:21, 21/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    сжатия должна быть, минимум, в двое быстрее записи на этот диск C чего это Пр... текст свёрнут, показать
     
     
  • 9.40, pavlinux (ok), 14:15, 22/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Пример потокового сжатия на 100 MB c ... текст свёрнут, показать
     

  • 1.24, Аноним (-), 15:53, 20/06/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    С каких пор Си стал низкоуровневым ?
     
     
  • 2.25, pavlinux (ok), 18:13, 20/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > С каких пор Си стал низкоуровневым ?

    Язык имеющий директиву asm() - низкоуровневый (Это такое неофициальный критерий)

     
     
  • 3.27, anonymous (??), 03:58, 21/06/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> С каких пор Си стал низкоуровневым ?
    > Язык имеющий директиву asm() - низкоуровневый (Это такое неофициальный критерий)

    лол. у меня есть низкоуровневый basic.

     
     
  • 4.29, pavlinux (ok), 22:18, 21/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >>> С каких пор Си стал низкоуровневым ?
    >> Язык имеющий директиву asm() - низкоуровневый (Это такое неофициальный критерий)
    > лол. у меня есть низкоуровневый basic.

    ЛоЛ будет когда ты узнаешь что на некоторых компах это был единственный язык.

     
     
  • 5.38, anonymous (??), 00:32, 22/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > ЛоЛ будет когда ты узнаешь что на некоторых компах это был единственный
    > язык.

    то есть, машинного кода не было?

    или тебе дать фото тетрадей, где у меня дизасм 51-го бейсика?

     
     
  • 6.39, pavlinux (ok), 02:16, 22/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> ЛоЛ будет когда ты узнаешь что на некоторых компах это был единственный
    >> язык.
    > то есть, машинного кода не было?
    > или тебе дать фото тетрадей, где у меня дизасм 51-го бейсика?

    Мне-то зачем, асм есть - низкоуровневый.

     
  • 3.30, Stax (ok), 22:24, 21/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ничего себе.

    В питоне:
    import corepy.arch.x86_64.isa as x86
    ...

    x86.xor(rax, rax)

    x86.cmp(rax, 1)
    x86.je(lbl_skip)
    x86.add(rax, MemRef(rbp, 16, data_size = 64))
    ...

    http://www.corepy.org/

     
     
  • 4.31, pavlinux (ok), 22:25, 21/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Ничего себе.
    > В питоне:
    > import corepy.arch.x86_64.isa as x86

    Без импорта и вызова внешних функций.

    а то ведь так и до шеллкода можно докатиться.

     
     
  • 5.33, Stax (ok), 22:28, 21/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> Ничего себе.
    >> В питоне:
    >> import corepy.arch.x86_64.isa as x86
    > Без импорта и вызова внешних функций.

    Продемонстрируйте ассемблер в C, в рамках стандартов C89 и POSIX.1-2001, скажем? Если в "питоне нет ассемблера", то его и в C точно так же нет. То, что в неком компиляторе XXX на платформе YYY внезапно доступна директива asm() со специфичным и несовместимым ни с чем другим синтаксисом - нестандартная особенность одной реализации.

     
     
  • 6.35, pavlinux (ok), 22:47, 21/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >>> Ничего себе.
    >>> В питоне:
    >>> import corepy.arch.x86_64.isa as x86
    >> Без импорта и вызова внешних функций.
    > Продемонстрируйте ассемблер в C, в рамках стандартов C89 и POSIX.1-2001, скажем?

    Ты ... или прикалываешься?



    void a(){
            __asm("nop");
            __asm("finit");
            __asm("emms");
            __asm("sfence");
    }


    $ gcc -D__STRICT_ANSI__ -W -Wall -Wextra -ansi -pedantic  -c test.c
    $ objdump -d test.o

    test.o:     file format elf64-x86-64


    Disassembly of section .text:

    0000000000000000 <a>:
       0:   55                      push   %rbp
       1:   48 89 e5                mov    %rsp,%rbp
       4:   90                      nop
       5:   9b db e3                finit  
       8:   0f 77                   emms  
       a:   0f ae f8                sfence
       d:   5d                      pop    %rbp
       e:   c3                      retq  

     
     
  • 7.36, Stax (ok), 23:01, 21/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Это "не в рамках стандарта", это просто аналог asm, который не отключается ключиком -ansi у gcc.

    Вы же не можете запустить этот код на ansi C компиляторе под ARM, например. Или на компиляторе С, полностью совместимом с ansi, но поддерживающим иной от gcc синтаксис ассемблера.

    То, что код компилится под gcc - ВООБЩЕ ничего не говорит о соответствии стандарту! Найдите упоминание, что в языке C есть asm() или __asm() - у Кернигана, например, или в спецификации ANSI, или в других. В C по стандарту ассемблера нет и быть не может, а вы всего лишь продемонстрировали gcc-специфичное расширение, работающее только на x86 архитектуре.

     
     
  • 8.37, pavlinux (ok), 23:46, 21/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Да, да, да начались отмазки --- Вот тут исходники UNIX System III, за 11 апреля... текст свёрнут, показать
     
  • 4.32, Stax (ok), 22:26, 21/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    А если вы вдруг скажете, что это ассемблер "со стороны", а не в языке - так в C тоже в языке ассемблера никакого нет, и спецификация POSIX директивы asm() так же не требует; слишком специфичная для платформы и реализации, и в "C вообще" доступа к ассемблеру так же нет.
     
     
  • 5.34, pavlinux (ok), 22:31, 21/06/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > А если вы вдруг скажете, что это ассемблер "со стороны", а не
    > в языке - так в C тоже в языке ассемблера никакого
    > нет, и спецификация POSIX директивы asm() так же не требует; слишком
    > специфичная для платформы и реализации, и в "C вообще" доступа к
    > ассемблеру так же нет.

    для таких зануд сделали __asm

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру