Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 28, 2009 19:37:45

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

почему возникают задержки на пустом месте???

я заметил что у меня веб страница генерируется долго времени 50мс, и все это время занимают какие-то задержки.

вот тест код:

# coding: utf-8

import time

def fun():
t = time.time()
msg = ''
for i in xrange(100000):
a = 6555*84567/1230/456
a = 6555*84567/1230/456
a = 6555*84567/1230/456
a = 6555*84567/1230/456
a = 6555*84567/1230/456
a = 6555*84567/1230/456
t2 = time.time()
d = (t2-t)*1000
t = t2
if d>1: print '%d' % d
fun()
результат:
15
15
15
16
16
14
как видно некоторые циклы съели по 15мс, почему?
чем больше нагрузка в цикле, тем чаще выскакивают паузы по 16мс

python 2.6.4, winXP, linux

Офлайн

#2 Ноя. 28, 2009 20:54:13

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

почему возникают задержки на пустом месте???

Можу через те що процесорного часу по різному надається:

[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py 
1
5
92%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
1
3
2
91%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
13
2
17
19
13
5
18
5
8
9
8
2
7
8
2
2
2
2
2
2
2
2
69%
[crchemist@localhost tmp]$ man time
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
97%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
95%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
15
12
5
11
8
8
5
12
2
2
2
2
2
2
2
2
2
2
2
2
77%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
95%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
99%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
94%
[crchemist@localhost tmp]$ /usr/bin/time -f "%P" python t.py
14
13
92%



Офлайн

#3 Ноя. 28, 2009 21:25:10

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

почему возникают задержки на пустом месте???

crchemist
Можу через те що процесорного часу по різному надається:
но почему такие разрывы большие, в общем случае один проход(1 итерация) проходит за 0,01мс, а разрыв = 15мс, т.е. в 1500 раз больше времени уходит на разрыв,

в итоге сама страница генерируется за 2мс, а с учетом разрывов выходит 50мс, грустно :(, что делать?

Офлайн

#4 Ноя. 29, 2009 06:03:46

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

почему возникают задержки на пустом месте???

Наверное у нас машины сильно разных весовых категорий - все происходит намного быстрее :)
Но тоже неравномерно.
Еще одна причина (кроме того, как OS распределяет время) в sys.getcheckinterval() - увеличение его помогает.

Но это все такая фигня…



Офлайн

#5 Ноя. 30, 2009 17:09:32

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

почему возникают задержки на пустом месте???

Андрей Светлов
Еще одна причина (кроме того, как OS распределяет время) в sys.getcheckinterval() - увеличение его помогает.
поигрался с этим параметром, лучше не стало

вычитал что существует сборки питона без GIL ( возможно из за которого возникают прерывания) python-safethread, но проект похоже заброшен.

получается джанго и подобные той же проблемой страдают?

Офлайн

#6 Ноя. 30, 2009 19:06:17

k0sh
От:
Зарегистрирован: 2009-10-08
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

почему возникают задержки на пустом месте???

А причем тут GIL, поток то один? Возможно в какой то момент планировщик операционки переключает выполнение скрипта на другое приложение.



Офлайн

#7 Ноя. 30, 2009 20:35:44

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

почему возникают задержки на пустом месте???

k0sh
А причем тут GIL, поток то один? Возможно в какой то момент планировщик операционки переключает выполнение скрипта на другое приложение.
я думаю операционка ни причем, т.к.
1) этот код на других языках не вызывает прерывания (С++),
2) планировщик операционки переключает выполнение на более мелкие отрезки времени ( что не отлавливается таймером )

кстате этот скрипт грузит ядро(не проц) всего на 50%, видимо из за этих прерываний

Офлайн

#8 Дек. 1, 2009 13:32:14

lightcaster
От:
Зарегистрирован: 2008-07-01
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

почему возникают задержки на пустом месте???

Ваш скрипт в любом случае будет грузить одно ядро. Такова архитектура питона.
Прерывания тут не причем.



Офлайн

#9 Дек. 2, 2009 05:46:21

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

почему возникают задержки на пустом месте???

lightcaster
Ваш скрипт в любом случае будет грузить одно ядро. Такова архитектура питона.
Прерывания тут не причем.
вопрос не про то


сейчас запустил на боевой виртуалке этот скрипт цикл увеличил до 10000000, работает все без прерываний!!!
ОС: linux CentOS
сейчас ещё раз убунту протестю и винду

Офлайн

#10 Дек. 4, 2009 09:40:37

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

почему возникают задержки на пустом месте???

o7412369815963
кстате этот скрипт грузит ядро(не проц) всего на 50%, видимо из за этих прерываний
На хабре есть тест сравнения производительности разных языков. Запустил на своем компе их тест (то же какой то цикл). Процессор загрузился всего на 25% (загрузил 4 ядра…очень неравномерно) :( … не ерундит питон? или проблема в системе?


lightcaster
Ваш скрипт в любом случае будет грузить одно ядро. Такова архитектура питона.
Прерывания тут не причем.
С многопоточностью не работал, но считал что ОС распределяет потоки внезависимости от приложения которые их (потоки) запустили. Т.е. ОС распределит все по ядрам, если проц. многоядерный. Просвятите, пожалуйста.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version