Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Miałem tam wartość na 5 ale nie miało to większego znaczenia, mogę ustawić i 1, choć wątpię, by to pomogło.
Przy tym 1 to jest katastrofa. xD
Ostatnio edytowany przez morfik (2013-11-11 09:01:36)
Offline
a zobacz przy priorytecie typu 40 albo 80. Gdy zacznie brakować RAMu system wcześniej zacznie korzystać ze SWAPa niż nagle przy 95% zajętym RAMie zaczyna masowo przerzucać na SWAP.
pokaż też
swapon -s
na twoim miejscu zrobiłbym sobie test;
swapoff /dev/sdaX
wyłączył SWAP. z tego co pamiętam masz 1GB RAMu ,więc;
#!/bin/bash modprobe zram echo $((900*1024*1024)) > /sys/block/zram0/disksize mkswap /dev/zram0 swapon -p 60 /dev/zram0
i zobacz co się stanie jak zajmiesz >1GB RAMu. Powinno być znacznie lepiej niż bez tego rozwiązania.
Offline
# swapon -s Filename Type Size Used Priority /dev/mapper/debian_crypt-swap partition 2097148 109196 -1
[quote=dominbik]z tego co pamiętam masz 1GB RAMu ,więc;[/quote]
Właśnie po to w syg dałem specyfikację, by mi ludzie przestali ciągle te pytania o sprzęt zadawać xD
Zaraz się tym zram pobawię, tylko dokończę zmianę i686 na amd64. :)
Obecnie to pracuje z :
# sysctl --all | grep swap vm.swappiness = 60
Jeszcze nie zdążyłem tego ustawić, zostawię na razie to tak jak jest i popatrzę czy coś się zmieni.
EDIT::
Wygląda na to, że to działa sporo lepiej niż przy 5-10. Nie pamiętam już w sumie kiedy mój pc miał w swapie 300MiB, a obecnie pracuje w miarę znośnie na 650. Ryje bo ryje, ale nie łapie zwiechy na parę minut. Czyli wychodzi na to, że zmniejszanie tego vm.swappiness by więcej ramu było wykorzystywane, nie jest do końca dobrym wyjściem na słabych maszynach. Co prawda, zamiast tych 910-930 MiB w ram teraz mam max koło 800 ale pracować się da.
Ostatnio edytowany przez morfik (2013-11-11 14:51:37)
Offline
Próbuje włączyć u siebie to zram ale aptosid widać tego nie obsługuje:
root:~# modprobe zram FATAL: Module zram not found root:~# zcat /proc/config.gz | grep -i zram
Poszukałem zatem czy coś od zram mam na dysku:
root:~# find / -iname *zram* /usr/src/linux-headers-3.10-3-amd64/include/config/zram.h /usr/src/linux-headers-3.12-0.slh.1-aptosid-amd64/drivers/staging/zram /usr/src/linux-headers-3.10-3-rt-amd64/include/config/zram.h /lib/modules/3.10-3-rt-amd64/kernel/drivers/staging/zram /lib/modules/3.10-3-rt-amd64/kernel/drivers/staging/zram/zram.ko /lib/modules/3.10-3-amd64/kernel/drivers/staging/zram /lib/modules/3.10-3-amd64/kernel/drivers/staging/zram/zram.ko
Doszukałem się jeszcze, że zram zależy od 3 parametrów CONFIG_BLOCK, CONFIG_SYSFS oraz CONFIG_ZSMALLOC:
Aptosid:
root:~# zcat /proc/config.gz | grep -i CONFIG_BLOCK CONFIG_BLOCK=y CONFIG_BLOCK_COMPAT=y root:~# zcat /proc/config.gz | grep -i CONFIG_SYSFS # CONFIG_SYSFS_DEPRECATED is not set CONFIG_SYSFS=y root:~# zcat /proc/config.gz | grep -i CONFIG_ZSMALLOC # CONFIG_ZSMALLOC is not set
# CONFIG_ZRAM_DEBUG is not set root:~# cat /boot/config-3.10-3-amd64 | grep -i CONFIG_ZSMALLOC CONFIG_ZSMALLOC=y root:~# cat /boot/config-3.10-3-amd64 | grep -i CONFIG_SYSFS # CONFIG_SYSFS_DEPRECATED is not set CONFIG_SYSFS=y root:~# cat /boot/config-3.10-3-amd64 | grep -i CONFIG_BLOCK CONFIG_BLOCK=y CONFIG_BLOCK_COMPAT=y root:~# cat /boot/config-3.10-3-amd64 | grep -i zram CONFIG_ZRAM=m
Przełączyłem się póki co na debianowego kernela i tutaj już ładowanie modułu działa. Tylko mam parę pytań odnośnie tego textu http://rozie.blox.pl/2011/11/Praca-na-destkopie-z-mala-iloscia-RAM-po-raz.html
Tam są takie zapisy:
Idea działania jest prosta: tworzymy swap z wyższym priorytetem, niż swap na dysku, na urządzeniu blokowym umieszczonym w kompresowanym obszarze pamięci. Początkowo dane tradycyjnie są w RAM, w przypadku, gdy system musi korzystać z przestrzeni wymiany, umieszcza je najpierw na swapie w RAM, a dopiero później - tradycyjnie - na swapie na dysku.
...
określenie rozmiaru dysku dla urządzenia /dev/zram0 na 200 MB (i jest to rozmiar swap, będący jednocześnie maksymalną wielkością zużytej pamięci, nie rozmiarem przeznaczonej pamięci na swap!)[/quote]
Czyli tak po ludzku, jak to działa?
Stworzyłem te 900MiB w /dev/zram0 i co to dokładnie jest? Za bardzo nie wiem jak traktować "maxymalną wielkość zużytej pamięci".
Zgodnie z tamtym textem, jak zaczyna brakować ramu to wtedy są zrzucane do swap w ramie? Przecie już brakuje ramu. xD W każdym razie wyłączyłem swap kompletnie i przetestowałem te 900MiB, które nie wiem gdzie zostało utworzone, czy co tam z tym zostało zrobione. Załadował do pamięci jakieś 800MiB i jakieś 500 do tego swapramu po czym się powiesił. xD Ale dało radę go rebootnąć przez ctrl+print scr+alt + s+u+b.
Spróbowałem to samo zrobić tym razem nie wyłączając swapu z dysku, i też się powiesił tym razem po jakichś 220 MIB, i nawet reboot powyższy skrótem go nie ruszył, trzeba było ręcznie.
To chyba nie działa tak jak powinno.
Offline
Może to nie jest odpowiednie miejsce na taką wypowiedź ale pozwolę sobie podzielić się z Wami czymś. Otóż oglądając materiały Silverlight na Linuksie poprzez Pipelight (Wine) zużycie procesora niemiłosiernie wzrasta praktycznie do 99%. C2D 6400 to wprawdzie nie demon szybkości, ale zainstalowałem Windows 7 na VB i ku mojemu zaskoczeniu przy oglądaniu tego samego materiału Silverlight (pod Windows na Virtualbox) procesor oscyluje w granicach 50 - 70%
Offline
[quote=morfik]Czyli tak po ludzku, jak to działa?[/quote]
Trzeba by poczytać w dokumentacji (po angielskU), ale z tego co zauważyłem na swoim sprzęcie - gdy kończy się RAM zaczyna to dopiero wtedy działać i kompresować dane. Maksymalnie te skompresowane dane mogą zająć tyle ile ustaliliśmy przy tworzeniu tego wirtualnego dysku.
[quote=morfik]Stworzyłem te 900MiB w /dev/zram0 i co to dokładnie jest? Za bardzo nie wiem jak traktować "maxymalną wielkość zużytej pamięci".[/quote]
No to jest, że 900MB może być skompresowane a reszta (czyli 100MB jest nietykalne).
[quote=morfik]Załadował do pamięci jakieś 800MiB i jakieś 500 do tego swapramu po czym się powiesił.[/quote]
no to działa okey - tylko, że doszedłeś do punktu krytycznego kiedy już nie było miejsca nawet przy tej kompresji.
[quote=morfik]Spróbowałem to samo zrobić tym razem nie wyłączając swapu z dysku, i też się powiesił tym razem po jakichś 220 MIB,[/quote]
tutaj już coś jest nie tak. Zauważyłeś jakieś spowolnienie póki nie doszedłeś do tej zacinki? możesz odwlec sobie swapowanie na tradycyjnym HDD o te 300MB. (wyższy priorytet na "swap w ramie" a gdy to się kończy niższy priorytet na tradycyjny swap). Chociaż myślałem, że będzie to więcej, bo gdzieś czytałem (chyba na wiki Gentoo), że można 3x więcej danych zmieścić niż bez tej kompresji.
Ostatnio edytowany przez dominbik (2013-11-11 20:34:36)
Offline
Testuje sobie to i generalnie to nie działa najlepiej. Nie ma przycinek, po prostu swap w ramie się wypełnia i nagle ścina dźwięku i nie idzie kompa wybudzić. Zmniejszyłem to nawet do 200M + zwykły swap, i niby swapram jest zajęty w full, i część danych w normlanym swapie, ale też się wiesza. Próbowałem przestawić ten vm.swappiness na 95, że niby by zrzucał dane do sawp a ten by był w ramie, to mogłoby nawet coś z tego być ale to albo nie działa albo działa inaczej niż ja przypuszczam, że powinno. xD Bo myślałem, że zacznie spuszczać dane od 100MiB max a to przy 700dopiero zaczeło.
Generalnie to to działa na takiej zasadzie, że się montuje urządzenie w ramie, i wypełnia się je danymi, coś jak ramdisk i można to też tak używać, niekoniecznie musi być to pod swap. Czytam sobie parę rzeczy, min to: http://wiki.gentoo.org/wiki/Zram i tam jest ciekawa kwestia tworzenia urządzeń z zależności od liczby rdzeni, czyli przykładowo, jak mam 2, to muszę utworzyć 2 urządzenia a nie 1, bo wtedy jak procki będą próbować zapełniać jeden swap, może być problem.
No i oczywiście przydałoby się to jakoś zautomatyzować, Póki co mój system tworzy dwa urządzenia na starcie systemu, ale nie mogę ich zamienić w swap.
Dodałem do /etc/modules:
zram
i stworzyłem /etc/modprobe.d/zram.conf
options zram num_devices=2
Na tym gentowskim wiki jest by dodać wpisy do /etc/udev/rules.d/10-zram.rules
0ERNEL=="zram0", SUBSYSTEM=="block", DRIVER=="", ACTION=="add", ATTR{disksize}=="0", ATTR{disksize}="100M", RUN+="/sbin/mkswap $env{DEVNAME}" KERNEL=="zram1", SUBSYSTEM=="block", DRIVER=="", ACTION=="add", ATTR{disksize}=="0", ATTR{disksize}="100M", RUN+="/sbin/mkswap $env{DEVNAME}"
No i do fstaba:
/dev/zram0 swap swap pri=16383 0 0 /dev/zram1 swap swap pri=16383 0 0
Wszystko zrobiłem ale coś nie działa.
Co ciekawe jeszcze, przy reboocie, jeśli mam urządzenia podmontowane za pomocą:
#!/bin/bash modprobe zram num_devices=2 SIZE=100 echo $(($SIZE*1024*1024)) > /sys/block/zram0/disksize echo $(($SIZE*1024*1024)) > /sys/block/zram1/disksize mkswap /dev/zram0 mkswap /dev/zram1 swapon /dev/zram0 -p 60 swapon /dev/zram1 -p 60
Komp dostaje taką samą zwiechę co normalnie przy pracy, za każdym razem.
[quote=dominbik]No to jest, że 900MB może być skompresowane a reszta (czyli 100MB jest nietykalne).[/quote]
A czemu nie kompresować tych 100MiB?
Ja bym sobie ten system zaimplementował u siebie, gdyby tylko się to przestało wieszać.
Offline
Takie ogólnie pytanie, bo nie wiem czy kompresować - kompresować? :P
Czy tylko jak się ma mało ramu (np. 1GB)? Bo mam 4, jest całkiem ok, ale jak kompresuję 7-zipem, to komputer staje dęba :P
Fervi
Offline
[b]fervi[/b]: ale z powodu ramu czy procesora? Jeśli procesora, to może to pomoże: [url]dug.net.pl/tekst/152[/url] (aczkolwiek nie jestem pewien czy ten tekst jest aktualny, u siebie używam liquorixa).
Offline
[quote=ArnVaker][b]fervi[/b]: ale z powodu ramu czy procesora? Jeśli procesora, to może to pomoże: [url]dug.net.pl/tekst/152[/url] (aczkolwiek nie jestem pewien czy ten tekst jest aktualny, u siebie używam liquorixa).[/quote]
Wydaje mi się, że Ramu (tzn. mam tak dobrane opcje, że kompresuje jak najmocniej jest to możliwe, ale dużo ramu pobiera) - przy kompresji system pobiera powiedzmy 300MB Ramu - 350; 7-zip z 2.5-3GB, i komputer zamula, niemniej jak skompresuje dane, to potem z górki
W teorii 7-zip to tam pikuś, bo go dość rzadko odpalam
Niemniej mam też parę komputerów (chociaż dobrze działają) i nie wiem czy kompresja RAM ma jakiś większy sens
Fervi
PS. Warto wspomnieć, że FF troszkę Ramu pobiera ...
Ostatnio edytowany przez fervi (2013-11-11 23:47:35)
Offline
[quote=ArnVaker][b]fervi[/b]: ale z powodu ramu czy procesora? Jeśli procesora, to może to pomoże: [url]dug.net.pl/tekst/152[/url] (aczkolwiek nie jestem pewien czy ten tekst jest aktualny, u siebie używam liquorixa).[/quote]
Ciekawe...może sprawdzi się na netbooku. Przetestuję.
Swoją drogą, skoro to usprawnia działanie systemu, dlaczego jest domyślnie wyłączone?
Offline
http://www.komputerswiat.pl/nowosci/programy/2010/46/kernel-linuksa-szybki-jak-diabli.aspx
nie ma opcji jak wrócę do domu włączam to u siebie
Offline
[quote=dominbik]http://www.komputerswiat.pl/nowosci/programy/2010/46/kernel-linuksa-szybki-jak-diabli.aspx
nie ma opcji jak wrócę do domu włączam to u siebie[/quote]
Ta łatka chyba jest domyślnie wbudowana już ... (i działająca)
Fervi
Offline
nie wiem sprawdzę. mam tam Archa i 3.12 bodajże
Offline
Wątpię żeby w kernelach Debiana ta opcja była domyślnie włączona. To raczej rozwiązanie desktopowe z tego co pamiętam, a kernel Debiana ma być do wszystkiego.
Offline
18:47 ~/: cat /proc/sys/kernel/sched_autogroup_enabled 1
okazuje się, że mam domyślnie to włączone.
Offline
[b]dominbik[/b]: mówisz o dystrybucyjnym kernelu Debiana czy o jakimś innym?
Offline
a sory. o Archu wogóle mowiłem ;p na Debianie nie patrzyłem.
Offline
Na debianie nie ma, trzeba włączyć w /etc/sysctl.conf , ale nie wiem czy to wpływa jakoś na coś, przynajmniej u mnie.
BTW, w końcu tworzenie i montowanie tych ramswap disków działa, literówki są wredne. xD
To teraz muszę to potestować, start od 100MiB na rdzeń. przy vm.swappiness=60.
EDIT:
To nie działa, są 2 ramsawp diski po 100MiB, w ramie jest jeszcze sporo miejsca wolnego. Te dwa dyski zajęte prawie full + 100MiB normalnego swapa i nagle system się powiesił. Dźwięk był odtwarzany normalnie i nagle zwiecha... No cóż, raczej nic więcej nie zrobię z tym, szkoda, bo to mogło by dodać trochę życia do mojego pc. xD
Ostatnio edytowany przez morfik (2013-11-12 19:04:25)
Offline
Ja także włączyłem dopisując sysctl.conf ale w zasadzie na pierwszy rzut oka nie widać aby wydajność skoczyła ostro w górę. Ale muszę przyznać, że na netbooku od chyba 3-4 ostatnich aktualizacji jajka ten mały kasprzak chodzi o wiele szybciej, więc moje odczucie co do usprawniania kernela z każdą aktualizacją są jak najbardziej pozytywne ;-)
Offline
To nie poprawia wydajności (już prędzej ją pogarsza ;)). To poprawia czas reakcji systemu przy wysokim obciążeniu procesora.
Offline
Odpaliłem kilka rzeczy na raz, w tle htop. Reakcja jaka była, taka jest. Może mi się wada wzroku powiększyła albo po prostu mały Atom'ek dostał kopa ;]
Offline
Time (s) | Query |
---|---|
0.00007 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00078 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.227.48.237' WHERE u.id=1 |
0.00064 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.227.48.237', 1732438527) |
0.00054 | SELECT * FROM punbb_online WHERE logged<1732438227 |
0.00036 | SELECT topic_id FROM punbb_posts WHERE id=245540 |
0.00006 | SELECT id FROM punbb_posts WHERE topic_id=24567 ORDER BY posted |
0.00059 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=24567 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00326 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=24567 ORDER BY p.id LIMIT 25,25 |
0.00129 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=24567 |
Total query time: 0.00769 s |