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/.
W pogoni za bugami w systemd, polecono mi bym "strace pid 1" i sprawdził kilka akcji. Jako, że nie miałem zbytnio jak zrobić "strace pid 1", to wpisałem to w google, a tam w jednym z linków znalazłem ciekawy wpis [url=http://www.brendangregg.com/blog/2014-05-11/strace-wow-much-syscall.html]dotyczący zmiennej TZ[/url] — timezone. O co chodzi? Wystarczy wpisać w terminalu te dwa poniższe polecenia i porównać czas jaki zostanie zwrócony:
$ time ls -l `perl -e 'print "/etc " x 1000'` >/dev/null $ time TZ=Europe/Warsaw ls -l `perl -e 'print "/etc " x 1000'` >/dev/null
U mnie wyrzuciło odpowiednio:
1.11s user 1.34s system 99% cpu 2.461 total 0.87s user 1.15s system 99% cpu 2.031 total
Skąd ta różnica? No widać system za każdym razem odpytuje plik /etc/localtime gdy niema w środowisku obecnej zmiennej TZ. Zatem mam pytanie, czy wy tę zmienną macie ustawioną? Jakby nie patrzeć to ponad 20% lepszy performance. xD
Ostatnio edytowany przez morfik (2015-10-13 22:14:40)
Offline
Faktycznie:
time ls -l `perl -e 'print "/etc " x 1000'` >/dev/null real 0m6.701s user 0m3.527s sys 0m3.117s
time TZ=Europe/Warsaw ls -l `perl -e 'print "/etc " x 1000'` >/dev/null real 0m4.908s user 0m2.613s sys 0m2.251s
Też jestem ciekaw, o co biega z tą zmienną.
Offline
[quote=morfik]Ja sobie ją ustawiłem na sztywno już. xD[/quote]
cat /etc/env.d/00timezone TZ=Europe/Warsaw
SOA#1
:D
Offline
W Gentoo i Funtoo, w Debku i klonach masz [b]/etc/environment[/b],
w Archu czy CentOS - niech się ktoś inny wypowie.
Offline
Sysvinit, 100 % obciążenia procesora (wszystkie wątki):
logan@toshiba:~$ time ls -l `perl -e 'print "/etc " x 1000'` >/dev/null real 0m3.322s user 0m1.496s sys 0m1.220s
logan@toshiba:~$ time TZ=Europe/Warsaw ls -l `perl -e 'print "/etc " x 1000'` >/dev/null real 0m3.271s user 0m1.436s sys 0m0.988s
Sysvinit, procek na luzie:
logan@toshiba:~$ time ls -l `perl -e 'print "/etc " x 1000'` >/dev/null real 0m1.781s user 0m0.956s sys 0m0.824s
logan@toshiba:~$ time TZ=Europe/Warsaw ls -l `perl -e 'print "/etc " x 1000'` >/dev/null real 0m1.521s user 0m0.864s sys 0m0.656s
Wniosek? Ustal zmienną i przy okazji wywal systemd.
Ostatnio edytowany przez Pavlo950 (2015-10-13 23:10:22)
Offline
Ja nie mógłbym wywalić systemd, za bardzo ficzerzasty jest dla mnie. xD Poza tym, trzeba by porównać oba strace i ustalić przyczynę. To powyższe to tylko jeden przykład. W sumie ja jeszcze się nie zagłębiałem w ten cały strace -- jakaś książka by się przydała czy coś. xD
Offline
Tu trochę podobny przypadek:
http://stackoverflow.com/questions/4554271/how-to-avoid-excessive-stat-etc-localtime-calls-in-strftime-on-linux
Offline
Time (s) | Query |
---|---|
0.00013 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00092 | 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.191.154.132' WHERE u.id=1 |
0.00187 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.191.154.132', 1732450743) |
0.00210 | SELECT * FROM punbb_online WHERE logged<1732450443 |
0.00058 | DELETE FROM punbb_online WHERE ident='18.191.97.229' |
0.00055 | SELECT topic_id FROM punbb_posts WHERE id=291684 |
0.00011 | SELECT id FROM punbb_posts WHERE topic_id=27800 ORDER BY posted |
0.00031 | 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=27800 AND t.moved_to IS NULL |
0.00034 | SELECT search_for, replace_with FROM punbb_censoring |
0.00118 | 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=27800 ORDER BY p.id LIMIT 0,25 |
0.00062 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27800 |
Total query time: 0.00875 s |