Skocz do zawartości
Zaloguj się, aby obserwować  
Ranma_man

Centos x64 a zużycie pamięci

Polecane posty

Witam,

 

Zajmuje się aktualnie pisaniem aplikacji siecowej na cele własne, która będzie chodziła w paru instancjach na serwerze z Centosem 5.3 w wersji 64 bitowej. I wszystko by było ok, gdyby nie zużycie pamięci przez proces. Na wstępie napisałem sobie prościutką aplikację testową z pętlą oraz socketem - w C# i odpaliłem w Mono 2.4.2.1 skompilowanym na podstawie domyślnej konfirugacji. I co się okazało? Że proces na starcie zjada około 100MB ramu. Wywaliłem praktycznie wszystko i to samo, ciągle zjada dużo ramu. Następnie zabrałem sie za przepisanie aplikacji do C++, ale żeby było łatwiej, to wziąłem się za biblioteki non-gui z QT - zużycie ponad 80MB ramu. Miałem już się poddać i zostawić tak jak jest, bo na serwerze mam 8GB ramu, więc 100MB w tą czy tą nie zrobi większej różnicy, ale postanowiłem przetestować jeszcze jedne środowisko programowania. Otóż tym razem padło na fajny ale totalnie niepopularny język kompilowany natywnie o wdzięcznie brzmiącej nazwie "D". Najpierw poszła wersja z biblioteką standardową (phobos) oraz bardziej rozbudowaną (tango). Efekt na starcie - zużycie rzędu 3MB ramu! Niestety nie mam czasu i chęci brać się za C++ ze standardową biblioteką ani za boosta, ale podejrzewam, że wynik byłby podobny. Czy to jest normalne? Może wina leży w gcc, wszak środowisko QT go używa, a i Mono (będące runtimem) zostało w nim skompilowane. Używam wersji z dystrybucji czyli gcc version 4.1.2 20080704 (Red Hat 4.1.2-44). Dodam, że ostatnio skompilowałem sobie apacha tylko i wyłącznie do obsługi SVNa - zajętość każdego procesu to ponad 80MB. Do serwowania stron www używam litespeed web server, gdzie php jest skompilowane razem z ichnim sapi. Sama prekompilowana binarka lsws zjada 3MB, natomiast każdy proces php dla każdego usera (używam suphp) wcina mi 150MB.

 

Czy to jest normalne? Niestety jestem laikiem jeżeli chodzi o zarządzanie pamięcią w linuksie, tak więc proszę o pomoc kogoś bardziej doświadczonego pod tym względem. :/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To normalne, tez przezylem szok jak sie przesiadlem z centosa 32 na 64, gdzie wczesniej memory_limit spokojnie dzialal na 16MB a pozniej nie wystarczalo mu 50MB...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tylko dziwi mnie to, że w D mam raptem 3MB. Może kompilator dmd jest przystosowany do tworzenia tylko 32 bitowych binarek, a przy pomocy gcc zapewne domyślnie kompiluję pod 64 bity. Mono to jeszcze potrafię zrozumieć, ale w C++ z QT wziąłem tylko parę klas i tyle zajmuje? Muszę sprawdzić jak to wygląda z zależnościami jego kompilacji.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Sprawdź to też na "współczesnej" dystrybucji Linuksa (Archu, rozwojowej wersji Ubuntu, Gentoo może gdzieś :)) Ogólnie 64 bitowy system będzie zużywa nieco więcej RAMu niż 32 bitowy, lecz nie powinno to generalnie dotyczyć aplikacji (na pewno nie tak że nagle żrą pamięć jak głupie). Problem może wynikać z używania starszych wersji kompilatora, czy bibliotek, które mogą by nie do końca dopieszczone (i np. mieć problemy z x86_64).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

obstawiam wersje gcc. spróbuj może z 4.3.2 albo i nawet z 4.4

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ogólnie systemy 64bitowe zajmują więcej pamięci, w niektórych aplikacjach nawet kilkakrotnie więcej.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×