Сайт | Скачать | Видео | Wiki

Голосование

Используете UKSM ?

Да. uksmd (из pf-kernel)
1 (50%)
Да. uksm
0 (0%)
Нет
1 (50%)

Проголосовало пользователей: 2

Автор Тема: Ядро: uksm (экономия памяти)  (Прочитано 11905 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Ядро: uksm zram (экономия памяти)
« Ответ #15 : 09 Сентябрь 2020, 09:15:52 »
в повседневной работе я никогда не упираюсь в размер РАМ
Можно подумать в "нагрузка на проц" упираетесь :)
Тут как с физкультурой : здоровому не нужна, а больному уже не поможет

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Ядро: uksm zram (экономия памяти)
« Ответ #16 : 09 Сентябрь 2020, 09:48:24 »
Тут как с физкультурой : здоровому не нужна, а больному уже не поможет
Я думаю, что в каких-то специфических условиях выигрыш наверняка будет, но нужно ли это для всех? Такой же вопрос и со зрам-своп, UIRD включает его автоматом в случае если uird.swap=auto, а раздел своп не найден, но это просто потому, что мы так решили :)
« Последнее редактирование: 09 Сентябрь 2020, 09:51:44 от betcher »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Ядро: uksm zram (экономия памяти)
« Ответ #17 : 09 Сентябрь 2020, 09:56:53 »
Такой же вопрос и со зрам-своп,
Да. По моим наблюдениям все технологии волшебной экономии ресурсов помогают только тем, кто в них свято верит

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Ядро: uksm zram (экономия памяти)
« Ответ #18 : 07 Март 2021, 11:26:14 »
http://mirror.yandex.ru/puppyrus/puppyrus-a64/kernel/new/5.11.0-pf2-1-pra/
Тестировал на прар2008
uksmd в 000-kern*.pfs - автозапуск через systemd/ Ресурсов не жрет
Код
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
900 uksmd     38   5    5340    252      0 S   0,3   0,0   0:04.65 uksmd
089-upd-2008-sf46.pfs - свежий uksmstat (под 5х ядра)
Мониторинг в трее : trayram
После старта OVS + palemoon = 50мб экономии
Если открыть порядка 20 вкладок - под 200мб
Насколько это не "попугаи" - не знаю. У меня 8гб ram - интересно бы на 2гб проверить
Тестируем и поставлю в прар2008

Протестировал:
Запускаю без uksmd - смотрю htop
Запускаю uksmd - uksmstat -s увеличивается пропорционально уменьшению RAM в htop
Т.е. все работает. Надо юзать. Полезная вещь. Побочек не выявил

Для DDR01 написал запускалку : /etc/rc.d/uksmd - ее же надо будет добавить в LF01
089-ddr01-upd-sf86.pfs
Определяет есть ли реализация uksm и какой версии

Для новой (в 5.х ядрах) реализации запускается uksmd. 
При наличии systemd запускается от юзера uksmd. Без systemd получилось только от root. Иначе ошибка capabilities: CAP_SYS_PTRACE required Кто-нибудь знает как решить? strace не помог

Для 4х ядер uksmd не нужен. Все работало и без моей запускалки.
Эффективность хуже : при запущенном с одной закладкой palemoon экономия 75мб против 112 на 5х
На chromium экономия меньше в 3 раза
« Последнее редактирование: 09 Март 2021, 11:13:18 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Ядро: uksm (экономия памяти)
« Ответ #19 : 09 Март 2021, 11:29:27 »
Переделал шапку, дороботал Итоги

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5341
  • Репутация: +139/-1
Re: Ядро: uksm (экономия памяти)
« Ответ #20 : 09 Март 2021, 11:57:29 »
Для 4х ядер uksmd не нужен. Все работало и без моей запускалки.
Эффективность хуже : при запущенном с одной закладкой palemoon экономия 75мб против 112 на 5х
Uksmd - это собственная реализация uksm от автора pf-kernel (post-factum). Если посмотреть историю патчей, которые он использовал для своих ядер, то видно, что разработчики uksm постоянно менялись. Вероятно post-factum что-то не устраивало, раз он написал собственную реализацию. Практика показала, что uksmd оказался эффективней.
« Последнее редактирование: 09 Март 2021, 19:27:04 от krasnyh »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Ядро: uksm (экономия памяти)
« Ответ #21 : 13 Март 2021, 11:28:10 »
Uksmd - это собственная реализация uksm от автора pf-kernel (post-factum)
Вот первое и единственное упоминание
И немного пояснений в гите uksmd

А вот изначальная реализация
UKSM-for-5.11.patch]UKSM[/url] : pacman -S archlinuxcn/linux-lily
Сделал инитрд и 000*.pfs linux-lily - там без aufs. Можно diro= (через overlayfs)
Могу выложить желающим протестировать

C донорами ауфс ядер все хуже. Похоже, придется самим компилить. Надо определиться с uksm. Добавил голосование в шапку темы

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5341
  • Репутация: +139/-1
Re: Ядро: uksm (экономия памяти)
« Ответ #22 : 13 Март 2021, 11:32:02 »
И здесь https://aur.archlinux.org/packages/uksmd
Maintainer:  post-factum

uksmd.c
Цитата
/*  * uksmd - userspace KSM helper daemon 
* Copyright (C) 2019 Oleksandr Natalenko <oleksandr@natalenko.name>
...
*/
« Последнее редактирование: 13 Март 2021, 11:37:28 от krasnyh »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5341
  • Репутация: +139/-1
Re: Ядро: uksm (экономия памяти)
« Ответ #23 : 22 Февраль 2023, 20:40:56 »
Желательно обновлять время от времени содержимое pra6407extra/, иначе там скопится старое никому ненужное...
Код
live@roll2210 ~ % packer uksmd
aur/uksmd 0.0.0.r19.779017a3dc-1 
    Userspace KSM helper daemon
pra6407extra/uksmd 0.0.0.r2.87572f7d30-1
    Userspace KSM helper daemon

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Ядро: uksm (экономия памяти)
« Ответ #24 : 25 Февраль 2023, 10:41:56 »
Удалю. Будет лежать вместе с ядрами

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Ядро: uksm (экономия памяти)
« Ответ #25 : 31 Май 2023, 14:47:44 »
Судя по https://aur.archlinux.org/packages/uksmd - добавили в еще некоторые ядра

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5341
  • Репутация: +139/-1
Re: Ядро: uksm (экономия памяти)
« Ответ #26 : 31 Май 2023, 15:23:32 »
Да, похоже что эти ядра пропатчены с добавлением pmadv_ksm*. Без этого uksmd не стал бы работать.

*pmadv_ksm:
Цитата
Для этого требуется pmadv_ksm() системный вызов, который доступен в pf-ядре

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5341
  • Репутация: +139/-1
Re: Ядро: uksm (экономия памяти)
« Ответ #27 : 03 Ноябрь 2023, 12:54:56 »
Новость уже старая, но не удивлюсь, если никто не слышал. )

С ядра 6.4 был переписан KSM:
Цитата
Реализован вариант механизма объединения идентичных страниц памяти, работающий на уровне процессов и позволяющий значительно снизить потребление памяти за счёт дедупликации страниц с одинаковым содержимым. В отличие от ранее предложенного механизма KSM (Kernel Samepage Merging) в новой реализации включение поддержки дедупликации осуществляется через prctl(PR_SET_MEMORY_MERGE) для процесса целиком и наследуется для дочерних процессов, без необходимости активации для каждого диапазона памяти при помощи вызова madvise(MADV_MERGEABLE), что значительно упрощает применение.

И соответственно, изменения коснулись uksmd:
Цитата
Демон регулярно просматривает список задач пользовательского пространства и сообщает им установить MMF_VM_MERGE_ANY флаг для struct mm_struct для ksmd kthread позволяет автоматически объединять страницы памяти с одинаковым содержимым. Обрабатываются только задачи с длительным сроком службы. Механизм основан на API KSM для каждого процесса, который был введен вместе с вышестоящей фиксацией d7597f59d1.

Для этого требуется process_ksm_{enable,disable,status}() системные вызовы, которые доступны в pf-ядре.


Ссылки:
https://codeberg.org/pf-kernel/linux/releases/tag/v6.4-pf1 (функция auto-KSM была переопределена поверх API управления KSM для каждого процесса)
https://codeberg.org/pf-kernel/uksmd
Релиз ядра Linux 6.4
uksmdstats  (optional) – for parsing /sys KSM statistics

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Ядро: uksm (экономия памяти)
« Ответ #28 : 03 Ноябрь 2023, 13:16:34 »
С ядра 6.4 был переписан KSM:
Юзаете со свежим? Улучшения заметны?
Планирую обновить свои ядра

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5341
  • Репутация: +139/-1
Re: Ядро: uksm (экономия памяти)
« Ответ #29 : 03 Ноябрь 2023, 13:28:22 »
Не знаю насчет улучшений, там скорее меньшие накладные расходы за счет использования API.
Код
$ uksmdstats                        
======================================================
uksmd with uksmdstats support. Powered by CachyOS Team
======================================================
Full scans               811     
Interval                 20 ms   
                                 
Max page sharing ratio   256     
Pages to scan            100     
Pages over ratio         20       
Duplicated pages         491     
Use zero pages           0       
Sharing/shared ratio     16.0583 
Unshared/sharing ratio   2.13239 
                                 
Pages sharing            517.191  MiB
Pages shared             32.207   MiB
Pages unshared           1102.85  MiB
                                 
General profit           488.786  MiB
(Запускаю с grep, чтоб не видеть вот эту портянку, uksmdstats | grep 'General profit')