[+] Maksymalny rozmiar swap i zarz

Ogólne pytania dotyczące systemu
krzysiek050
Posty: 13
Rejestracja: 26 maja 2009, 00:31

[+] Maksymalny rozmiar swap i zarządzanie pamiecią

Post autor: krzysiek050 »

Witam.
W tym temacie napisałem o problemie z ilością zajętej pamięci przez mysql i apache.
http://debian.linux.pl/viewtopic.php?t=14823
Jeżeli nie chce się wam czytać to powiem że tam miałem po uruchomieniu tych usług 80 MB zajętej pamięci. Ale kiedy uruchomiłem inny program, który przeładował mi pamięć i partycje swap to program mi zabiło i zwolniła się pamięć przez niego zajęta, ale też przez apache i mysql. Zajętej pamięci było 24 MB i serwery pobierały znikome ilości pamięci. Poczekałem 10 minut i dalej jakiejś specjalnej aktywności tych serwerów nie ma. Więc jak ta pamięć jest zarządzana? Program pobiera sobie jej trochę na zapas, a w razie czego oddaje go innemu programowi, który tej pamięci potrzebuje? Czy takie przeładowanie (bo ono nie było planowane) pamięci nie szkodzi innym programom nie licząc tego że zabija ten marnotrawny?

I oczywiście zależy mi na uruchomieniu tego programu co zabiera tyle pamięci i widać te 500 MB swapu było mu zbyt mało. Jaki rozmiar swapu mogę maksymalnie użyć w 32 bitowym Debianie, tak żeby system nie musiał niczego emulować czy coś w ten deseń? I czy mogę ten pamięciożerny program przydzielić tylko do pamięci swap? Bo intensywna wymiana nie będzie się w nim działa, a jednak zbyt dużo zajmuje i wolałbym w razie konieczności uruchomienia innego programu żeby on nie wszedł na swap.

I pytanie na koniec, bo nie wiem jak do końca zmienić rozmiar pamięci swap (zawsze ustawiałem to przy instalacji). Na mój rozum chcę to zrobić tak.
A to mój plik /etc/fstab:

Kod: Zaznacz cały

#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/hda1       /               ext3    errors=remount-ro 0       1
/dev/hda3       /magazyn       ext3    defaults        0       2
/dev/hda2       none            swap    sw              0       0
/dev/hdb        /media/cdrom0   udf,iso9660 user,noauto     0       0
Dezaktywuję sobie na początek hda3 i hda2, usuwam te partycje, robię sobie nowy swap, robię nową partycję magazynowa i wpisuję te same wartości co tutaj i jedynie ustawiam hdaX na odpowiedni. Czy to by wystarczyło, czy muszę jeszcze zmienić coś? I jakim programem mogę edytować partycje w Linuksie (najlepiej już uruchomionym)?

Z góry dziękuje za pomoc.
Awatar użytkownika
lis6502
Member
Posty: 1798
Rejestracja: 05 listopada 2008, 20:14
Lokalizacja: Miasto Szybowców

Post autor: lis6502 »

I jakim programem moge edytowac partycje w linuksie (najlepiej juz uruchomionym)?
Najlepiej żadnym. Poszukaj moich tematów ze słowem 'dysk' i 'problem'. 99% moich problemów miało miejsce tylko dlatego że nie chciało mi się włączać jakiejś innej dystrybucji ;-). Możesz co prawda odmontować partycje na których chcesz mieszać i później przez

Kod: Zaznacz cały

partprobe
poinformować kernel że zmienił się układ partycji, ale (jak zawsze) robisz to na własną odpowiedzialność.
Jeśliś dalej uparty, polecam (g)parted: zawiódł mnie tylko raz. Oczywiście, jak bez 'amen' w pacierzu, tak tutaj nie obejdzie się bez kopii zapasowej.
Masz też możliwość (nie super wydajną, ale na pewno bezpieczniejszą niż mieszanie w serwerowych partycjach) utworzenia plikopartycji wymiany i dołączenia jej przestrzeni do już istniejącej. Jak będziesz zainteresowany, to napiszę Ci co trzeba zrobić.
krzysiek050 pisze:mialem po uruchomieniu tych uslug 80 MB zajetej pamieci
To i tak niewiele jak na charakter uruchomionych tych usług.
krzysiek050 pisze:zwolnila sie pamiec przez niego zajeta, ale tez przez apache i mysql!
Reszta pamięci apacza i bazy została zeswapowana, dlatego zajmowały tak mało pamięci fizycznej po ubiciu tego procesu.

A teraz moje pytanie na koniec: czy w czasach, gdy 1GB RAMu kosztuje 52 zł warto jest bawić się w rozszerzanie partycji wymiany i kombinować? Z tego co widziałem masz jej ledwie 256MB, to ciutkę mało na takie pamięciożerne programy jak Apache czy Mysql.
krzysiek050
Posty: 13
Rejestracja: 26 maja 2009, 00:31

Post autor: krzysiek050 »

99% moich problemów miało miejsce tylko dlatego że nie chciało mi się włączać jakiejś innej dystrybucji
Nie rozumiem. Mam uruchomic inna dystrybucje i z niej mieszac w partycjach? Partycja /dev/hda3 jest pusta wiec nie musze robic zadnych kopii. Moge je po prostu usunac i zrobic nowa (tak mi sie wydaje).
Reszta pamięci apacza i bazy została zeswapowana, dlatego zajmowały tak mało pamięci fizycznej po ubiciu tego procesu.
Wlasnie nie zostaly zeswapowane. W top-ie mialem pokazane ze zuzywa mi 25 MB i 0 pamieci swapu.
A teraz moje pytanie na koniec: czy w czasach, gdy 1GB RAMu kosztuje 52 zł warto jest bawić się w rozszerzanie partycji wymiany i kombinować? Z tego co widziałem masz jej ledwie 256MB, to ciutkę mało na takie pamięciożerne programy jak Apache czy Mysql.
No tak, tylko to jest miniserwer domowy do zabawy i sciagania plikow wiec nie oplaca mi sie inwestowac w cos nowego (to jest moj stary komputer). Plyta glowna obsluguje mi max 512 MB pamieci i myslalem zeby sobie dokupic, ale gdzie ja teraz dostane 256 MB SDRAMu (nie liczac allegro, ale tam wysylka jest drozsza niz sama pamiec).
Awatar użytkownika
lis6502
Member
Posty: 1798
Rejestracja: 05 listopada 2008, 20:14
Lokalizacja: Miasto Szybowców

Post autor: lis6502 »

krzysiek050 pisze:myslalem zeby sobie dokupic, ale gdzie ja teraz dostane 256 MB SDRAMu (nie liczac allegro, ale tam wysylka jest drozsza niz sama pamiec).
Zawsze możesz kupić pamięc przy okazji, za wysyłkę zapłacisz raz]Mam uruchomic inna dystrybucje i z niej mieszac w partycjach?[/quote]Tak, chociażby polecaną sysrescd. Generalnie chodzi o to byś nie mieszał w partycjach z poziomu systemu na nich uruchomionego.
krzysiek050 pisze:Moge je po prostu usunac i zrobic nowa (tak mi sie wydaje).
Skoro jest pusta to śmiało. Ja i tak zgrałbym gdzieś /etc, jak to się mawia, w razie 'w'.
krzysiek050 pisze:Wlasnie nie zostaly zeswapowane. W top-ie mialem pokazane ze zuzywa mi 25 MB i 0 pamieci swapu.
Mogę conajwyżej domniemywać, że ubity proces korzystał w jakiś sposób z tych dwóch serwerów, a po jego śmierci owe serwery po prostu zwolniły swoją pamięc przydzieloną na jego potrzeby. Dokładnie nie jestem w stanie powiedzieć, bo nie jestem hackerem kernela ;-).
krzysiek050
Posty: 13
Rejestracja: 26 maja 2009, 00:31

Post autor: krzysiek050 »

Tak, chociażby polecaną sysrescd. Generalnie chodzi o to byś nie mieszał w partycjach z poziomu systemu na nich uruchomionego.
Troche juz sie gubie w tym. Czyli jak po prostu odmontuje obie partycje to system nadal ma jakis wplyw na nie? Przeciez jak sa jakies wielkie serwery, to czesto odlacza sie dyski w czasie pracy komputera i to wlasnie pod kontrola linuksa. Napisales ze powinienm skopiowac /etc. Czy system czyta gdzies jeszcze o partycjach nie liczac /etc/fstab? Mowie oczywiscie o starcie systemu. Bo przeciez nawet jak uzyje tego rescuecd i usune obie partycje to jednak nadal /dev/hda1 bedzie istniala i na niej bedzie wszystko w nienarusznym stanie wiec po co kopiowac cale /etc?
Mogę conajwyżej domniemywać, że ubity proces korzystał w jakiś sposób z tych dwóch serwerów, a po jego śmierci owe serwery po prostu zwolniły swoją pamięc przydzieloną na jego potrzeby. Dokładnie nie jestem w stanie powiedzieć, bo nie jestem hackerem kernela .
Wlasnie zadne z tych procesow nie wplywaly na siebie. Ani apache i mysql na ubity proces ani odwrotnie. Po prostu po przeladowaniu pamieci ten proces chyba jeszcze zadal wiecej pamieci i system zabral innym aplikacjom, a pozniej z racji tego ze jemu wciaz bylo malo to go zabil a tamte aplikacje nie odzyskaly tej pamieci. Pytanie czy apache i mysql nie ucierpialy na tym, bo zabrano im jakies wazne bloki pamieci czy po prostu braly sobie na zapas i w razie czego zwolnily.

No i zakladajac ze poslucham sie Ciebie i usune partycje przy pomocy rescuecd (nie chce ryzykowac), to nadal zostaje pytanie jak duza ta partycje swap moge zrobic :) .
Awatar użytkownika
lis6502
Member
Posty: 1798
Rejestracja: 05 listopada 2008, 20:14
Lokalizacja: Miasto Szybowców

Post autor: lis6502 »

krzysiek050 pisze:Czyli jak po prostu odmontuje obie partycje to system nadal ma jakis wplyw na nie?
Wpływu może i nie ma, ale zmienisz ich układ na dysku. Wspomniane partprobe informuje kernel że zmieniłeś coś, ale zachowania kernela nigdy nie przewidzisz w stu procentach. Ja zmieniałem rozmiar i przesuwałem w dół (poczytaj zresztą), skończyło się katastrofą (po tym niemiłym doświadczeniu nauczyłem się robić kopie zapasowe :D ).
krzysiek050 pisze:Przeciez jak sa jakies wielkie serwery, to czesto odlacza sie dyski w czasie pracy komputera i to wlasnie pod kontrola linuksa
Jasne, z tym że tam jest kilka dysków, a Ty masz jeden w którym chcesz kopać. O to się rozchodzi. Co innego np ja, czasem podłącze drugi dysk w czasie pracy komputera (nie polecam), poinformuję kernel by przeskanował wszystkie szyny, montuję, używam, odmontowuję, zatrzymuję hdparmem, odpinam fizycznie, informuję kernel.
krzysiek050 pisze:Czy system czyta gdzies jeszcze o partycjach nie liczac /etc/fstab?
fstab jest potrzebny głównie poleceniu mount, które tam sprawdza co gdzie podłączyć. Sam 'system' widzi tylko dyski i partycje ([hs]dX), ale nie bardzo wie co z nimi można zrobić.
krzysiek050 pisze:wiec po co kopiowac cale /etc?
O prawach Murphy'ego słyszałeś? Jeżeli coś pójdzie nie tak i stracisz dane na hda1, to będziesz miał kopię konfiguracji. Co to daje? Ano to, że stawiasz na czysto system, przywracasz kopię i oszczędzasz sobie godziny spędzone na googlaniu i czytaniu manuali. W moim wypadku za długo ustawiałem np taki /etc/make.conf (specyficzny dla Gentoo), by robić to ponownie.
krzysiek050 pisze:czy apache i mysql nie ucierpialy na tym
Gdyby ucierpiały, to informację znalazłbyś w logach. Może to były bufory, a kernel przy zabiciu tamtego programu spłukał bufory? Kto wie, skoro działa to nie ma co mędrkować nad tym dlaczego przedtem było tak, a po tym i tym jest tak i tak. Uważam, że kernel wie co robi zabierając mi 500 MB pamięci.
krzysiek050 pisze:czy po prostu braly sobie na zapas
Apetyt na pamięć jest specyficzny dla danego programu. Jedne biorą 'na zapas' (wspomniane wcześniej bufory) inne operują tym co mają i w razie potrzeby biorą więcej.
krzysiek050 pisze:nadal zostaje pytanie jak duza ta partycje swap moge zrobic
Zakładając że pamięc swap widziana jest jako całość wraz z fizyczną, wyjdzie tego w sumie 3GB na 32bitowym systemie, chyba że zainstalujesz jądro w wersji bigmem (informacje odnośnie pamięci znajdziesz na forum, choćby tutaj).
gielo
Beginner
Posty: 168
Rejestracja: 20 maja 2009, 17:20
Lokalizacja: Che³m

Post autor: gielo »

W archaicznych komputerach zwykło się przyjmować 2x pamięć fizyczna dla pamięci swap. Jeżeli masz 256mb fizycznej to na swap dajesz 512mb. Oczywiście nic nie stoi na przeszkodzie aby dać więcej, tylko po co ? pamięć swap jest wolniejsza i jak system zacznie tam pchać większośc uruchomionych usług to ci serwer zamuli.

Co do apache i mysql są one dość pazerne na pamięć i inne zasoby komputera (głównie pamięć i zasoby procesora). Może nie tyle one same, co bazy danych i strony www działające pod ich kontrolą. ¬le zoptymalizowany skrypt może zarżnąć nawet dużego dedyka z 4GB ram i 4o rdzeniowym prockiem, nie mówiąc o jakimś domowym archaicznym sprzęcie.

Powinieneś też poczytać trochę na temat konfiguracji w/w serwerów tzn. apache oraz mysql jak i samej optymalizacji uruchamianych na nich skryptów i baz. Jeżeli chodzi o to ostatnie to możesz olać jak nie są one twego autorstwa lub pochodzą z niepewnego źródła - zreguły są one wtedy poprawnie napisane. W sumie to nawet popularne oprogramowanie jak joomla, wordpress, fora dyskusyjne by przemo mogą zarżnąć ci serwer.

Jeszcze wiele przed tobą ale tematyka serwerowa nie jest dla leni i nieuków ;]. Nad tym trzeba trochę czasu spędzić aby zaczęło działać jak powinno.
krzysiek050
Posty: 13
Rejestracja: 26 maja 2009, 00:31

Post autor: krzysiek050 »

Temat który podałeś lis6502, jest chyba zbyt trudny jak dla mnie na dzień dzisiejszy, więc ucząc się na cudzych błędach, puki co zmienię partycję z pomocą rescuecd.

gielo, tylko że ten serwer ma być tylko dla mnie. Puki co służy mi on do ściągania plików, ale zainstalowałem sobie też apache i mysql, ponieważ chcę się trochę pobawić w php, ale nie mam zamiaru stawiać tam żadnych skryptów, które ujrzą światło dzienne. Po prostu wykonuję to, co może wykonać zamiast mojego normalnego komputera bo ten służy raczej do gier i pobiera mi zbyt dużo prądu żeby chodził 24/7. Dlatego mogę instalować swap i wszystko może działać wolno, bo ja sam dla siebie mogę chwilę poczekać. Konfigurować się nauczę z czasem. Wiem że proste to nie będzie, ale to co zrobiłem do tej pory zadowala mnie na tyle mocno że będę dalej próbował.

Tak swoją drogą, to muszę przyznać że to najlepsze forum jakie spotkałem. Wiem że robię błędy ortograficzne, ale wam bardziej niż na wytykaniu ich, zależy na pomocy potrzebującym. Dziękuję wam za pomoc. Proszę jeszcze nie zamykać tematu, bo w razie wypadku (odpukać) przy tych zmianach chciałbym napisać tutaj.
fnmirk
Senior Member
Posty: 8273
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

gielo pisze:W archaicznych komputerach zwykło się przyjmować 2x pamięć fizyczna dla pamięci swap.
Może tak wcześniej przejrzysz?
http://pl.wikipedia.org/wiki/Hibernacja_(informatyka)
http://pl.wikipedia.org/wiki/Stan_wstrzymania
Chyba ta zasada nie jest taka archaiczna?
gielo
Beginner
Posty: 168
Rejestracja: 20 maja 2009, 17:20
Lokalizacja: Che³m

Post autor: gielo »

Owszem jest.

Dzisiaj standardem juz jest niejako 4GB, 8GB ram. Nie wiem po co ci 16GB dodatkowe dużo wolniejszego swapu.

Jak zbraknie ci ramu to czy masz 1GB czy 16GB swapu serwer będzie jednakowo zamulał
ODPOWIEDZ