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

Автор Тема: Подключение PFS c копированием в RAM  (Прочитано 37044 раз)

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:Подключение PFS c копированием в RAM
« Ответ #30 : 22 Ноябрь 2012, 19:08:30 »
Скомпилил. Удобно. При 20 закладках firefox : uksmstat -sppv - 9.26 MiB. Можно к conky прикрутить

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Подключение PFS c копированием в RAM
« Ответ #31 : 26 Ноябрь 2012, 11:12:25 »
Очень желательно выбрать оптимальный способ контроля свободной памяти.
Нужен надёжный механизм, особенно если копировать в RAM модули при загрузке.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:Подключение PFS c копированием в RAM
« Ответ #32 : 26 Ноябрь 2012, 11:27:12 »
Похоже, ничего не остается кроме писать формулу типа:
вся память - RAMдиски - запущенные_проги =
UKSM и прочие оптимизации не брать в расчет,т.к. малопредсказуемо
Контролировать можно в conky (на любителя) или в трее (типа freememapplet)

Трей можно написать на yad. Лучше бы iluyk на С c получением цифр из sh скрипта :
Код
trey цифра popup_текст ПКМ-действие ЛКМ-действие
trey `realfreemem`
« Последнее редактирование: 26 Ноябрь 2012, 11:32:37 от sfs »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Подключение PFS c копированием в RAM
« Ответ #33 : 26 Ноябрь 2012, 11:36:30 »
В данном случае вопрос не про визуальный контроль, а про проверку "можно ли копировать PFS в память, если ли там место".

Надо бы написать простой скрипт типа checkramfree, который будет сообщать сколько есть свободной памяти.
Этот скрипт можно будет вызывать из pfsramload (вместо отдельной проверки) и т.д.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:Подключение PFS c копированием в RAM
« Ответ #34 : 26 Ноябрь 2012, 12:11:43 »
Надо бы написать простой скрипт типа checkramfree
См. init, там есть подобное
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Подключение PFS c копированием в RAM
« Ответ #35 : 26 Ноябрь 2012, 12:23:47 »
См. init, там есть подобное
Там вроде бы используется free.
Но, судя по обсуждению, с новыми ядрами free может давать не совсем правильную информацию.
Поэтому интересуюсь, может есть лучший способ, или с free достаточно точно?

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:Подключение PFS c копированием в RAM
« Ответ #36 : 26 Ноябрь 2012, 13:38:26 »
При написании подключалки я добросовестно передрал все проверки из init
free - не показывает занятое ram дисками не зависимо от версии ядра

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Подключение PFS c копированием в RAM
« Ответ #37 : 05 Декабрь 2012, 13:12:45 »
Желательно вынести проверки из pfsramload в отдельный скрипт (checkramfree).
Можно просто взять код вычисления свободной памяти из INIT (или из pfsramload), или можно/нужно ещё какие-то проверки добавить?

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:Подключение PFS c копированием в RAM
« Ответ #38 : 05 Декабрь 2012, 13:30:16 »
Желательно вынести проверки из pfsramload в отдельный скрипт (checkramfree).
А смысл? Больше нигде не применяется...
Можно просто взять код вычисления свободной памяти из INIT (или из pfsramload), или можно/нужно ещё какие-то проверки добавить?
Это 1 и тот же код. Можно бы проверок добавить, но пока в проблемы не разу не уткнулся.
А вообще - формулу остатка от рэмдисков памяти надо бы вывести...

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Подключение PFS c копированием в RAM
« Ответ #39 : 05 Декабрь 2012, 14:25:19 »
А смысл? Больше нигде не применяется...
возможно будет применяться
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:Подключение PFS c копированием в RAM
« Ответ #40 : 14 Декабрь 2012, 16:30:18 »
А где еще будет применяться?

checkramfree по замыслу что должен вывести?
К-во свободной памяти или влезет ли в нее модуль?

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Подключение PFS c копированием в RAM
« Ответ #41 : 15 Декабрь 2012, 14:31:17 »
checkramfree по замыслу что должен вывести?
К-во свободной памяти или влезет ли в нее модуль?
К-во свободной памяти.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:Подключение PFS c копированием в RAM
« Ответ #42 : 16 Декабрь 2012, 15:18:31 »
121215
Погуглил:
Основной вывод :    "Мораль  всей этой истории в том, что использование процессами памяти в  Linux  является  сложным  вопросом." (цитата из 2й ссылки)

По делу:
Код расчета памяти я брал из init.

Код
 # free
                      total            used              free       shared      buffers
Mem:       4148012       722088      3425924            0        76692
-/+ buffers:             645396      3502616
У нас в init 21х RAMSIZE=used (что вообще не понятно - наверное ошибка - тянется от старого busubox) - поэтому я взял RAMSIZE=free
В woof RAMSIZE=total #110405 fix 'free' applet output format different in later versions of busybox.

В итоге  checkramfree  :
Код
free | grep 'Mem:' | tr -s ' ' | cut -f 2 -d ' '
Ну или посчитать на awk  df -t tmpfs cумму 2й колонки и вычесть

В pfsramload
Код
SIZESFSK=$(($SIZESFSK + 1000)) #some slack.
Не много ли 1Мб подстраховки? Может 10кб хватит?

121216
Изменил 1000->10. Ухудшений не заметил
Доработал скрипт

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Подключение PFS c копированием в RAM
« Ответ #43 : 16 Декабрь 2012, 16:36:39 »
Не много ли 1Мб подстраховки? Может 10кб хватит?
Думаю это вообще можно убрать.
Код
SIZESFSK=$(($SIZESFSK + 1000)) #some slack.
MINRAM2CPY=$(($SIZESFSK * 2)) #100222 technosaurus: in case of very big puppies.
[ $RAMSIZE -gt 280000 ] && [ $RAMSIZE -gt $MINRAM2CPY ] && COPY2RAM="yes" && echo "$pfs_module copying to ram"
Размер перед проверкой умножается на два, и кроме того дополнительно проверяется наличие 280 МБ (ИМХО тоже многовато).

Вообще эту часть неплохо бы оптимизировать.
Планирую сделать примерно так:

Код
freeram="$(checkramfree)"  
filesize="$(du -k "${fsfile}" | cut -f 1)"
minram="$(expr ${filesize} \* 2)"
[ ${minram} -lt 131072 ] && minram=131072
if [ ${minram} -lt ${freeram} ]; then
  # Копировать.
fi
« Последнее редактирование: 16 Декабрь 2012, 16:42:32 от Zay »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:Подключение PFS c копированием в RAM
« Ответ #44 : 16 Декабрь 2012, 16:42:22 »
А про init что думаете - там то же самое...
Настораживает что во всех puppy этот код присутствует. Возможно при каких-то условиях есть проблемы