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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2015-10-13 22:13:36

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Zmienna środowiskowa TZ

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:

Kod:

$ 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:

Kod:

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

 

#2  2015-10-13 22:31:52

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Zmienna środowiskowa TZ

Faktycznie:

Kod:

time ls -l `perl -e 'print "/etc " x 1000'` >/dev/null

real    0m6.701s
user    0m3.527s
sys    0m3.117s

Kod:

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


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2015-10-13 22:35:40

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Zmienna środowiskowa TZ

Ja sobie ją ustawiłem na sztywno już. xD

Offline

 

#4  2015-10-13 22:39:33

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Zmienna środowiskowa TZ

[quote=morfik]Ja sobie ją ustawiłem na sztywno już. xD[/quote]

Kod:

cat /etc/env.d/00timezone
TZ=Europe/Warsaw

SOA#1

:D


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2015-10-13 22:44:43

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Zmienna środowiskowa TZ

Ten /etc/env.d/ jest specyficzny tylko dla gentoo czy dla każdego linuxa?

Offline

 

#6  2015-10-13 22:47:12

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Zmienna środowiskowa TZ

W Gentoo i Funtoo, w Debku i klonach  masz [b]/etc/environment[/b],
w Archu czy CentOS - niech się ktoś inny wypowie.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2015-10-13 23:09:58

  Pavlo950 - człowiek pasjonat :D

Pavlo950
człowiek pasjonat :D
Zarejestrowany: 2012-02-20
Serwis

Re: Zmienna środowiskowa TZ

Sysvinit, 100 % obciążenia procesora (wszystkie wątki):

Kod:

logan@toshiba:~$ time ls -l `perl -e 'print "/etc " x 1000'` >/dev/null

real    0m3.322s
user    0m1.496s
sys     0m1.220s

Kod:

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:

Kod:

logan@toshiba:~$ time ls -l `perl -e 'print "/etc " x 1000'` >/dev/null

real    0m1.781s
user    0m0.956s
sys     0m0.824s

Kod:

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

 

#8  2015-10-13 23:17:56

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Zmienna środowiskowa TZ

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

 

#9  2015-10-14 20:27:49

  yossarian - Szczawiożerca

yossarian
Szczawiożerca
Skąd: Shangri-La
Zarejestrowany: 2011-04-25

Re: Zmienna środowiskowa TZ

Tu trochę podobny przypadek:
http://stackoverflow.com/questions/4554271/how-to-avoid-excessive-stat-etc-localtime-calls-in-strftime-on-linux

Offline

 

#10  2015-10-14 20:53:21

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Zmienna środowiskowa TZ

Mnie zastanawia czemu ta zmienna nie jest ustawiana globalnie z automatu. Na środowiskach graficznych też tak jest? Czy to dotyczy jedynie menadżerów okien?

Offline

 

#11  2015-10-14 21:00:06

  Pavlo950 - człowiek pasjonat :D

Pavlo950
człowiek pasjonat :D
Zarejestrowany: 2012-02-20
Serwis

Re: Zmienna środowiskowa TZ

Na XFCE też się tak dzieje.

A sprawdzał ktoś na TTY, bez [b]X[/b]ów?

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.009 seconds, 13 queries executed ]

Informacje debugowania

Time (s) Query
0.00008 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00125 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.223.206.84' WHERE u.id=1
0.00060 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.223.206.84', 1732453906)
0.00042 SELECT * FROM punbb_online WHERE logged<1732453606
0.00063 DELETE FROM punbb_online WHERE ident='18.222.164.176'
0.00058 DELETE FROM punbb_online WHERE ident='3.147.48.105'
0.00060 SELECT topic_id FROM punbb_posts WHERE id=291686
0.00009 SELECT id FROM punbb_posts WHERE topic_id=27800 ORDER BY posted
0.00058 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.00012 SELECT search_for, replace_with FROM punbb_censoring
0.00109 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.00078 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27800
Total query time: 0.00686 s