RAMzSWAP (сжатый своп без использования диска)

RAMzSWAP (сжатый своп без использования диска)

Postby Sekator500 » 28 Apr 2011, 16:20

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

Проект основан на compcache v0.5.4 тут страница и и доп информация типа доков и прочего http://code.google.com/p/compcache/ в принципе я особо ничего не изменял а только слил все в кучу дабы получить один модуль и несколько подправил код согласно нашего ядра, конечно есть версии compcache и по новее но присутствуют проблемы с портированием так что пока только версия 0.5.х

Я немного протестировал и в принципе все работает правда стресс тест я так и не прошел но при полном отсутствии памяти я смог смотреть HD фильм и сжимать с помощью UPX модуль PHP весом в 13мегабайт на режиме 8 чего ранее я сделать не смог бы по причине банальной нехватки памяти. Так же проделывал тесты на новой прошивке от плейон и к моему удивлению она больше не падает ну по крайней мере пока хотя например на том же флеше что со свопом что без получаю один и тот же результат все-таки своп не является расширителем памяти но помочь в данном вопросе он может.

Короче пробуйте народ...


Установка:
Скопируйте файл zswapvenus.ko в /usr/local/etc и добавьте в /usr/local/etc/rcS следующие строки перед активацией основного свопа ищите строку начинающуюся с swapon
Code: Select all
/sbin/insmod /usr/local/etc/zswapvenus.ko disksize_kb=32768
mknod /dev/ramzswap0 b `cat /proc/devices | sed -n 's/\([0-9]\+\) ramzswap0/\1/p'` 0
swapon /dev/ramzswap0

Размер диска выставлен на 32мега в принципе больше и не надо хотя можете поэкспериментировать, дополнительная информация по использованию драйвера на сайте проекта.
Состояние памяти смотрим стандартной командой free и состояние свопа командой cat /proc/ramzswap
zswapvenus.tar
(29 KiB) Downloaded 399 times




Обновление 29/04/2011

Обновленный порт версии compcache 0.6.2 , детально об изменениях и новых возможностях смотрите на сайте проекта.

Установка:
Удаляем предыдущий драйвер и копируем содержимое архива в /usr/local/etc , поскольку поменялись имена строчки запуска следует заменить на:
Code: Select all
/sbin/insmod /usr/local/etc/ramzswap.ko num_devices=1 disksize_kb=32768
mknod /dev/ramzswap0 b `cat /proc/devices | sed -n 's/\([0-9]\+\) ramzswap/\1/p'` 0
swapon /dev/ramzswap0

Состояние свопа теперь доступно через /usr/local/etc/rzscontrol /dev/ramzswap0 --stats
zmem.tar
(75 KiB) Downloaded 426 times


Опять же пробуем, отписываемся если что...
Last edited by Sekator500 on 29 Apr 2011, 13:52, edited 2 times in total.
User avatar
Sekator500
 
Posts: 457
Joined: 11 Nov 2010, 00:13
Location: Киев

Re: RAMzSWAP (сжатый своп без использования диска)

Postby FarVoice » 28 Apr 2011, 16:46

Кайф! Спасибо, Секатор! Буду пробовать.
ASUS O!Play R1 (amp_r12_vrtn), xTreamer Pro (amp_r12_vrt), xTreamer Prodigy (iNeXT 2.14 r2), IconBIT HDR12L (amp_r12_vrt), 3Q F425HW (xds42gl_7725_r3), MyGica A11 (mygica_m3_20121222)
User avatar
FarVoice
Администратор
 
Posts: 8573
Joined: 03 Sep 2010, 01:27
Location: Russia, Moscow

Re: RAMzSWAP (сжатый своп без использования диска)

Postby Lossless » 28 Apr 2011, 17:06

Браво! Отличная идея! После праздников попробую собрать версию постарше...
Xtreamer Prodigy (X3D_4.00_r0)
User avatar
Lossless
 
Posts: 358
Joined: 20 Oct 2010, 11:12
Location: Russia

Re: RAMzSWAP (сжатый своп без использования диска)

Postby vasa666 » 28 Apr 2011, 17:08

Так надо написать?
Code: Select all
#!/bin/sh

ifconfig eth0 192.168.0.2 netmask 255.255.255.0
#route add default gw 192.168.0.1
#mount -t nfs -o nolock 192.168.0.1:/nfs/rootfs /mnt

#/sbin/modprobe ide-cd
dd if=/Test.fat of=/dev/rd/0
mount -t vfat /dev/rd/0 /mnt/rd
/sbin/insmod /usr/local/etc/zswapvenus.ko disksize_kb=32768
mknod /dev/ramzswap0 b `cat /proc/devices | sed -n 's/\([0-9]\+\) ramzswap0/\1/p'` 0
swapon /dev/ramzswap0
swapon /mnt/rd/swap.img
ASUS O!Play R1 (amp_r7 Со скином hd2 blue)
vasa666
 
Posts: 62
Joined: 14 Dec 2010, 23:51

Re: RAMzSWAP (сжатый своп без использования диска)

Postby Virtual » 28 Apr 2011, 17:25

проверил, работает!
на прошивке рев 4.1 :)

модуль уложил сюда:
Code: Select all
/lib/modules/2.6.12.6-VENUS/kernel/fs/ramswap/zswapvenus.ko

далее
Code: Select all
umount /etc !!!


в файле:
/etc/init.d/rcS1
сразу после строки:
# We need to direct standard output to /dev/console or the output of script rcS will disappear.


добавил код:
Code: Select all
/sbin/insmod /lib/modules/2.6.12.6-VENUS/kernel/fs/ramswap/zswapvenus.ko disksize_kb=32768
mknod /dev/ramzswap0 b `cat /proc/devices | sed -n 's/\([0-9]\+\) ramzswap0/\1/p'` 0
swapon /dev/ramzswap0


сразу несколько вопросов правок!:
.что если модуль не загрузится иль еще чего? думаю перед mknod нуно проверку сделать на наличие ramzswap0
.что если mknod не отработает? может проверить наличие /dev/ramzswap0 перед swapon?

ЗЫ все это думаю стоит оформить в патчик :).....
марсы: HDS7 (смотрелка AMP скин vrt уже без вариантов)
HDR12 AMP (обычно сервер с RAM 256 и возможностью подключить 2 SATA диска 2T+)
XTR PRO(AMP, HTTP(S) NFS SMB FTP сервер +trans2.90 + 2 SATA диска 2T+
сатурны: XTR Prodigy, R6S(512Mb_NAND), HD900A(_MD*) прошивка
User avatar
Virtual
 
Posts: 6466
Joined: 01 Oct 2010, 17:17
Location: UFA RU

Re: RAMzSWAP (сжатый своп без использования диска)

Postby Virtual » 28 Apr 2011, 17:35

помучал самоя тяжелой хренью :) Оперой.... не вылетело :(. все работало.
марсы: HDS7 (смотрелка AMP скин vrt уже без вариантов)
HDR12 AMP (обычно сервер с RAM 256 и возможностью подключить 2 SATA диска 2T+)
XTR PRO(AMP, HTTP(S) NFS SMB FTP сервер +trans2.90 + 2 SATA диска 2T+
сатурны: XTR Prodigy, R6S(512Mb_NAND), HD900A(_MD*) прошивка
User avatar
Virtual
 
Posts: 6466
Joined: 01 Oct 2010, 17:17
Location: UFA RU

Re: RAMzSWAP (сжатый своп без использования диска)

Postby Sekator500 » 29 Apr 2011, 14:58

vasa666 wrote:Так надо написать?

Сойдет...

Virtual wrote:сразу несколько вопросов правок!:
.что если модуль не загрузится иль еще чего? думаю перед mknod нуно проверку сделать на наличие ramzswap0
.что если mknod не отработает? может проверить наличие /dev/ramzswap0 перед swapon?

Проверки можно конечно поставить, дело хозяйское...



Обновил версию, зрите в шапку :arrow:
User avatar
Sekator500
 
Posts: 457
Joined: 11 Nov 2010, 00:13
Location: Киев

Re: RAMzSWAP (сжатый своп без использования диска)

Postby Ajax » 02 May 2011, 18:26

/usr/local/etc/rzscontrol /dev/ramzswap0 --stats
Не могу просмотреть состояние пишет что отказано в доступе..Что делать? HDP-R1 4.1
Ajax
 
Posts: 96
Joined: 03 Mar 2011, 16:29

Re: RAMzSWAP (сжатый своп без использования диска)

Postby Sekator500 » 02 May 2011, 22:47

Ajax wrote:/usr/local/etc/rzscontrol /dev/ramzswap0 --stats
Не могу просмотреть состояние пишет что отказано в доступе..Что делать? HDP-R1 4.1


Скорее проблемы с правами смотрите chmod если нет копию ошибки в студию...
User avatar
Sekator500
 
Posts: 457
Joined: 11 Nov 2010, 00:13
Location: Киев

Re: RAMzSWAP (сжатый своп без использования диска)

Postby Genrix60 » 03 May 2011, 05:17

compcache v0.5.4 работает без проблем.
Порт версии compcache 0.6.2 не работает.
Не "закралась" ли тут ошибка во второй строке?(подчеркнуто)
mknod /dev/ramzswap0 b `cat /proc/devices | sed -n 's/\([0-9]\+\) ramzswap/\1/p'` 0
Может всё-таки так нужно?
mknod /dev/ramzswap0 b `cat /proc/devices | sed -n 's/\([0-9]\+\) ramzswap0/\1/p'` 0
HDMP-300(IMS)301(1073) - Bast Castle (FW); Airtone AT-ER1 (1185) - inext_tv_v1.17_moS_r2; Digma HDMP-510(1186_750Mhz) -Прошивки здесь
Мало знать, нужно ещё уметь донести знания до других.
User avatar
Genrix60
 
Posts: 561
Joined: 06 Apr 2011, 14:38
Location: Беларусь, Минск -> Россия, Бердск

Next

Return to Разработка

Who is online

Users browsing this forum: No registered users and 6 guests

cron