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/.

Użytkownik


Cześć.
Od jakiegoś czasu zauważyłem, że na jednym z kompów skacze load do 5.0, później spada. Zebrałem statystyki przez /usr/lib/sysstat/sadc. Jedyne co widzę to, iowait skacze i nie widać na statystykach użycia dysku żeby cokolwiek zapisywał/odczytywał na dysk. Czy znacie jakiś sposób/narzędzie dzięki któremu będę mógł zrzucić dane per każdy proces ? Możliwe, że jakiś proces chce coś bardzo szybko zapisać.
Ostatnio edytowany przez ukasz (2014-08-11 23:32:34)

Offline







Podobno człowiek...;)








Jak to się zdarza często, i możesz poczekać przy konsoli,
to polecam htop i iotop.
Rzuć okiem na to:
http://www.tummy.com/articles/isolating-heavy-load/
Ostatnio edytowany przez Jacekalex (2014-08-11 11:43:59)
Offline

Użytkownik


Mniej więcej co 1,5 godziny. Co do siedzenia przed konsolą to nie zawsze mam czas. Będę się starał.

Offline







Podobno człowiek...;)








Top może zrzucić listę procesów do pliku, jeśli umiesz wyciągnąć z tego, co rozrabia, to może przydałby się skrypcio w type:
if $LOAD >5;
then top {opcje} -n1 >>/var/log/wynik.txt;
fi;$LOAD możesz wyczesać np z wyniku uptime.
Taki skrypcik odpalany co np 3 minuty może trochę pomóc.
Możesz też porobić dla podejrzanych programów "kagańce" przy pomocy cgroup.
Ostatnio edytowany przez Jacekalex (2014-08-11 12:04:54)
Offline

Użytkownik


Naskrobałem coś takiego.
#! /bin/sh
load=`cat /proc/loadavg | awk '{print $1}'`
barrier="2.0"
while true; do
if [ $(echo "$load > $barrier" | bc ) -eq 1 ]
then
top -bn1 >> /tmp/top-dump
ps aux >> /tmp/ps-dump
fi
donePozostaję tylko czekać. o 11:55:30 miałem już loada. Następny pewnie będzie koło 13:30.
Ostatnio edytowany przez ukasz (2014-08-11 12:42:05)

Offline







Podobno człowiek...;)








Dodaj tam sleep 60 albo 180 w pętli, bo jak odpalisz tego skrypta w takiej formie, to ta pętla while dopiero Ci load zrobi. :D
Ostatnio edytowany przez Jacekalex (2014-08-11 14:18:26)
Offline

Użytkownik


Właśnie zauważyłem. Ok odpalone.
Ostatnio edytowany przez ukasz (2014-08-11 12:44:25)

Offline







Podobno człowiek...;)








Ja bym też czytanie /proc/loadavg wsadził do wnętrza pętli, bo inaczej to chyba raz wczyta wynik, i trzyma go do wyłączenia.
EDIT:
#!/bin/bash
while true;
do
load=$(awk '{print $1}' /proc/loadavg)
barier="2.0"
wynik=$(echo "$load > $barier"| bc);
if [ "$wynik" -eq 1 ]
then
top -bn1
fi;
sleep 60;
done;Gotowe - u mnie. ;)
Ostatnio edytowany przez Jacekalex (2014-08-11 14:55:44)
Offline

Użytkownik


Jacekalex napisał(-a):
Ja bym też czytanie /proc/loadavg wsadził do wnętrza pętli, bo inaczej to chyba raz wczyta wynik, i trzyma go do wyłączenia.
Ehhh. No tak. Zakręt ze mnie :P

Offline







Podobno człowiek...;)








Ostateczna wersja u mnie:
#!/bin/bash
while true;
do
load=$(awk '{print $1}' /proc/loadavg)
barier="2.0"
wynik=$(echo "$load > $barier"| bc);
if [ "$wynik" -eq 1 ]
then
echo "load wynosi $load";
fi;
unset load;
sleep 60;
done;Tylko wstaw swoje polecenia zamiast echo $load.
dodałem czyszczenie zmiennej load na końcu pętli dla pewności.
Puściłem w pętli sekundowej w czasie kompilacji jajka:
load wynosi 8.04 load wynosi 8.04 load wynosi 8.04 load wynosi 8.04 load wynosi 7.88 load wynosi 7.88 load wynosi 7.88 load wynosi 7.88 load wynosi 7.88 load wynosi 7.89 load wynosi 7.89 load wynosi 7.89
Wszelkie znaki na niebie i ziemi twierdzą, że chodzi.
Chociaż do porównywania liczb dziesiętnych lepiej brać język programowania, np Perla.
Odpada wtedy użycie bc, jako protezy.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-08-11 17:46:12)
Offline



Użytkownik







Podobno człowiek...;)








ethanak napisał(-a):
Wystarczy awk
Wiem, że wystarczy, ale nie chciało mi się kombinować.
Perl tym bardziej by wystarczył, o C/C++ nie wspominając w ogóle. :D
Ostatnio edytowany przez Jacekalex (2014-08-11 21:21:14)
Offline



Użytkownik



Użytkownik
Poza tym i tak używasz awka... naprawdę, uwierz mi - toto ma nieco więcej możliwości niż "print $cośtam"
Offline





Szczawiożerca






Jest taki przycisk „Edytuj ”. Zastanawiałeś się może kiedyś do czego on służy?
Offline







Podobno człowiek...;)








ethanak napisał(-a):
Perl to przerośnięty awk :-P
Perl wyrósł z Awka, bo Awk nie potrafił się nauczyć obsługi XMl, baz SQL, protokołów sieciowych, i miliona innych rzeczy.
Perl w tej chwili jest pełnoprawnym językiem programowania, co nie do wszystkich dociera.
Jak ktoś nie rozumie, o czym napisałem, to niech sobie spróbuje przepisać Spamassasina lub Amavisa na AWK. :D
Taka próba programiście zajmie najwyżej 30 sekund. :xD
Ostatnio edytowany przez Jacekalex (2014-08-11 18:36:19)
Offline



Użytkownik
@yossarian: przyzwyczaiłem się do forów które automatycznie uznają następny post wysłany w określonym czasie jako edycję poprzedniego. Akurat zbyt rzadko takiej funkcji używam aby zauważyć, że skrypt na dugu tego nie potrafi.
Jeśli możesz wyświadczyć mi pewną uprzejmość - podaj jakiś odnośnik do tego, czego skrypt na dugu nie potrafi, dostosuję się.
@jacekalex: jeśli używasz awka do wyciągnięcia pozycji z linii (do czego spokojnie wystarczy cut) a potem czort wie po co przepuszczasz wyniki przez bc... sorry, nie wypowiem się, ale sam powinieneś wiedzieć co chciałem powiedzieć.
Offline





Szczawiożerca






ethanak napisał(-a):
@yossarian: przyzwyczaiłem się do forów które automatycznie uznają następny post wysłany w określonym czasie jako edycję poprzedniego. Akurat zbyt rzadko takiej funkcji używam aby zauważyć, że skrypt na dugu tego nie potrafi.
Jeśli możesz wyświadczyć mi pewną uprzejmość - podaj jakiś odnośnik do tego, czego skrypt na dugu nie potrafi, dostosuję się.
Wiem, że nie potrafi robić kawy ;)
Nikt tu nie lata z paragrafami szukając użytkowników do udupienia.
Po prostu kilka wiadomości wysyłanych pod rząd zazwyczaj niebyt dobrze wygląda.
Offline







Podobno człowiek...;)








Ja poprawiłem trochę skrypta, który naskrobał Autor wątku, bez szczególnego zagłębiania się w szczegóły, po prostu, żeby zadziałał.
$(echo "zmienna >$zmienna2" |bc) mnie się też nie podoba, ale jak bash nie rozumie liczb dziesiętnych, to cóż ja na to poradzę?
Pocieszę niektórych, że w Perlu z liczbami dziesiętnymi i ułamkowymi nie ma żadnego problemu.
Ostatnio edytowany przez Jacekalex (2014-08-11 21:29:03)
Offline

Użytkownik


Skrypt zebrał trochę danych. Niestety nie widać żeby którykolwiek z procesów używał mocno IO. Podejrzewam, że nie wyłapał tego momentu (który może trwać kilka sekund) w którym jakiś proces jechał po dysku, Pozostaję mi tylko siedzenie przed konsolą i czajenie się na zarazę :P. Jedyne co mi jeszcze do głowy przychodzi to iotop. Dzięki wszystkim za pomoc.
Ostatnio edytowany przez ukasz (2014-08-11 22:01:03)

Offline







Podobno człowiek...;)








Cgroup - do dyzia jest blkio - dzieli wg zadanego algorymtu zasoby między procesy.
Może warto się pobawić?
Jak coś takiego porobiłem dla cpu i ram, i mam względny spokój.
PS
w skrypcie obok top możesz użyć np:
iotop -o -b -n1
w ogóle warto zajrzeć do:
man iotop
Ostatnio edytowany przez Jacekalex (2014-08-11 22:12:08)
Offline

Użytkownik


Poczytałem szybko man iotop i odpalę skrypt tylko z iotop -ot. zobaczymy co mi to pokaże. Dzięki za informację. Nigdy nie robiłem nic z cgroups.

Offline







Podobno człowiek...;)








Cgroup jest dość banale w konfiguracji.
U mnie przez jakiś cholerny błąd nie chciał czytać konfigu cgconfig.conf,
więc stanęło na dwóch rzeczach:
Ten skrypcio robi konfigurację zamiast cgconfig:
http://jacekalex.sh.dug.net.pl/cgstart
To jest konfig demona cgred:
http://jacekalex.sh.dug.net.pl/cgrules.conf
Potem tylko musi wstać demon cgred, czyli proces:
root 6327 0.0 0.0 22228 3868 ? Ss 21:34 0:04 /usr/sbin/cgrulesengd --nodaemon --nolog
Gotowe.
Offline

Użytkownik


OK. Znaleziony problem. RRdcached. Co jakieś 2 godziny zapisuje dane na dysk. Zmniejszyłem timeouty -w 60 -f 360. Dalej skacze load. Przynajmniej już nagios nie wysyła powiadomień. Ehhh. Nigdy nie zrozumiem rrdcached.

Offline







Podobno człowiek...;)








Jeżeli to RRDcached ci przymula, to jedziesz z Cgroup, albo Cpulimit, Softlimit względnie Ionice, i gotowe.
Nie ma się co certolić, jak mamusia z łobuzem, żaden program nie ma prawa przymulać systemu.
Offline