Skocz do zawartości
  • Cześć!

    Witaj na forum RootNode - aby pisać u nas musisz się zarejestrować, a następnie zalogować. Posty pisane z kont niezarejestrowanych nie są widoczne publicznie.

Czy Load Average ok. 6 przy kompilacji php to coś nromalnego?


Rekomendowane odpowiedzi

Opublikowano

Cześć, to nie kwestia wydajności dysku a użycia procesora. Podczas tego procesu to procesor jest tzw. "wąskim gardłem". Przy kompilacji kernela uruchom sobie htop czy top i  sprawdź użycie procesora :)

Opublikowano

a na jakim os to stoi   w ogóle ?

czasami nawet jeśli io kuleje (a nie wiemy jakie twój vps ma pod spodem i jak jest obciążone i jak przede wszystkim jest przekazane (multum opcji)) to load ci tego nie pokaże (w zależności od osa)

 

druga sprawa, vcpu, jakie masz cpu zbindowane ? czy mają affinity, respektują numa zone... jaki rodzaj wirtualizacji masz, czy na matce czasem nie ma pożyczania czasu a twoje 4 vcpu w rzeczywistości mielą się na jednym rdzeniu i to HT :)

 

napisz coś więcej o wersji osa i jeśli znasz konfiguracje swojej matki/cpu lub jakieś statsy, czasami paroma testami io/cpu + dmidecode/lspci/lstopo itd.. można się dość dobrze wstrzelić w konfiguracji matki co da ci obraz tego co masz, dodatkowo jakiś histogram wydajności cpu najlepiej z 72h przynajmniej z tygodnia normalnego i wszystko bedziesz wiedziec.

 

 

Opublikowano

Ale jakie to ma znaczenie ? Kompilacja czyli budowanie programu C ze zródeł jest procesem złożonym. Tworzone są rożne pliki w tym biblioteki statyczne, które są później linkowane, wiec CPU idzie na maxa oraz występują liczne odczyty / zapisy na dysk.  Jednak kompilacja jest wykonywana jednorazowo. 

 

Obserwuj load na produkcji przy realnym ruchu, a nie kilkuminutowej kompilacji .
Analogia jest ze spaniem w samochodzie chwilami spalenie dochodzi np do >20 l co nie oznacza, ze tyle pali ;)

Opublikowano

Skoro posługujemy sie analogiami , to wolałbyś jeździć mercedesem v8 czy trabantem z dwusuem ?  Wolsiz jeździć autostradą 4 pasmową prawie pustą czy zakorkowaną drogą gminną.

Spalanie się sprawdza na stacji benzynowej - w it w histogramie :)

 

Oczywiście, że vps pod www raczej  z założenia nie jest przewidziany jako node w klastrze kompilera. Natomiast wyniki te można łatwo przeliczyć na realną wydajność później takiego LAMPA, więc jeśli kolega obserwuje kompilacje i widzi to i tamto i wie , że jego aplikacja potrzebuje później tyle i tyle to chyba da mu pewien obraz sytuacji.  Raczej bym się nie obrazał na wyniki kompilacji, dlatego spytałem o dane, bo na ich podstawie mozna dopiero coś odpowiedzieć w temacie czy wynik jest normalny czy nie dla takiej konfiguracji, czy siedzi na kórniku czy normalnym serwerze.

 

Opublikowano
5 minut temu, servizza napisał:

Skoro posługujemy sie analogiami , to wolałbyś jeździć mercedesem v8 czy trabantem z dwusuem ?  Wolsiz jeździć autostradą 4 pasmową prawie pustą czy zakorkowaną drogą gminną. 

Kompilacja nie służy do testowania wydajności serwera 😀.

 

Kompilacja będzie zużywać dużo zasobów na serwerze zarówno mocnym jak i słabym, a wynik w stylu "Load Average ok. 6" w nic nie mówi o faktycznej kondycji serwera. Jest rzeczą oczywistą, że użycie zasobów w czasie kompilacji duże. Problem by miał jak by mu się kompilacja wywaliła, bo VPS nie dał by rady.

Opublikowano

Sugerujesz, że kompilacja to jakiś magiczny proces całkowicie inny w  działaniu  (nie mylić z charakterystyką) niż np. apache czy mysql ?

No to niewątpliwie jakaś nowa informacja dla mnie, możesz rozwinąć lub ewentualnie odesłać do dokumetnacji tych ukrytych wywołan kernela, chętnie poczytam :)

 

Opublikowano

Panowie, dzięki za odpowiedzi. Tak jak wcześniej wspomniałem, nie przemyślałem zapytania 😉 .  Pik był w momencie kompilacji, iowait podczas było niskie (więc zakładam, że wydajność dyskowa jest ok) i zasadniczo po kompilacji wszystko wróciło do normy. Standardowo load tanczy pomiedzy 0,4 do 0,9 z pikami max do 1,5.

Opublikowano (edytowane)
19 godzin temu, servizza napisał:

Sugerujesz, że kompilacja to jakiś magiczny proces całkowicie inny w  działaniu  (nie mylić z charakterystyką) niż np. apache czy mysql ?

 

Nie to ten sam proces i właśnie dlatego w ustawieniach aplikacji serwerowych jak apache czy mysql masz mnóstwo opcji konfiguracyjnych ograniczających zużycie zasobów jak limit pamięci, połączeń czy czas trwania żeby żeby jeden proces/wątek/wywołanie/użytkownik/błąd w skrypcie nie zeżarł ci z zasobów całego serwera.

 

O ile takich ograniczeń nie wprowadził na proces kompilacji to ten weźmie wszystkie zasoby jakie ma dostępne. Pytanie z rodzaju takich "czy to normalne że przekodowywanie video zajmuje 100% procesora (przynajmniej jednego rdzenia)"? Odpowiedź: tak, to normalne. I nieważne, czy masz procesor 1GHz, 5GHz czy 40Ghz. Kodowanie pójdzie całą parą , tylko na jednym się skończy w godzinę, na drugim w 10 minut, a na trzecim w 10 sekund. Identycznie z kompilacją choć to bardziej skomplikowany proces i daje także po dysku.

 

Jak chce sprawdzić wydajność serwera kompilacją to niech odpali to samo na kilku różnych maszynach i porówna czas zakończenia. A to że podczas kompilacji miał load avarage na poziomie 6 to chyba dobrze świadczy o PHP i kompilatorze, że dobrze wykorzystał wszystkie rdzenie, szczególnie, że (jak z ostatniego wpisu widać) stadardowo load avarage mu skacze pomiędzy 0,6, a 1,5.

Edytowane przez nnd.newbie
Opublikowano (edytowane)
Dnia 19.03.2019 o 13:25, servizza napisał:

Sugerujesz, że kompilacja to jakiś magiczny proces całkowicie inny w  działaniu  (nie mylić z charakterystyką) niż np. apache czy mysql ?

No to niewątpliwie jakaś nowa informacja dla mnie, możesz rozwinąć lub ewentualnie odesłać do dokumetnacji tych ukrytych wywołan kernela, chętnie poczytam :)

 

 

Kompilacją nie benchmarkuje się ani CPU and I/O z powodu niejednoznaczności kompilowanych źródeł, użytego kompilatora oraz maści czynników trzecich.

 

Benchmark CPU czy I/O dokonuje się programami do tego służącymi, które używają tych samych kryteriów aby wygenerować sensowny wynik. GCC, który na jednym CPU użyje instrukcji SSE 4.2 żeby przyspieszyć proces translacji kodu źródłowego na binarny, a na drugim AVX2 nie jest obiektywne i w żaden sposób nie przekłada się na rzeczywistą wydajność obydwu maszyn w starciu z np. ilością requestów na sekundę nginxa.

 

Więc nie, jeśli robisz benchmark maszyny przez puszczenie kompilacji php to robisz to źle i nie masz zielonego pojęcia o zasadzie działania benchmarków i czym się różni benchmarkowy test od kodowania wideo, obsługi requestów na socketach czy kompilacji właśnie. Jak chcesz się kurczowo trzymać swojego przykładu z samochodem to w tym momencie stwierdzasz, że samochód który maksymalnie jedzie 200 km/h jest szybszy od tego co ma na liczniku 190 km/h, a to że pierwszy dobija do dwusetki w 5 minut i przejedzie krótszy dystans w ciągu minuty niż drugi, który dobija do 190 km/h w 3 sekundy już całkowicie ignorujesz, bo nie patrzysz na żaden inny współczynnik ani sam fakt, że maksymalna prędkość może nie mieć nic do gadania w sytuacji, gdy test trwa 3 sekundy i nigdy jej nie uświadczysz. I właśnie taką zasadniczą różnicą jest np. wielkość cache L1/L2/L3 w CPU, który w kompilacji odgrywa znacznie większą rolę niż w wykonywaniu kodu już skompilowanego. To, że jedna maszyna radzi sobie lepiej z A nie oznacza, że jednocześnie radzi sobie lepiej z B, i to nawet porównując kompilację dwóch różnych projektów, a co dopiero kompilację z zupełnie innym zadaniem.

Edytowane przez Archi
  • Super! 2

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z forum, wyrażasz zgodę na: Warunki użytkowania, Regulamin, Polityka prywatności.