Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 14, 2009 09:59:20

goblin_maks
От:
Зарегистрирован: 2008-12-10
Сообщения: 110
Репутация: +  0  -
Профиль   Отправить e-mail  

threading и virtMEM

сделал для теста скрипт, 50 спящих потоков..

import time
import threading

global semaph
semaph = threading.Semaphore(1)


def myfunc():
semaph.acquire()
for i in range(5):
print "test"
tume.sleep(20)
semaph.release()



for i in range(50):
_my_thr = threading.Thread(target = myfunc, name = i + " : Thread")
_my_thr.start()
решил посмотреть перформанс..оказалось что потоки спящие на семафоре требуют много свопа, в данной конфигурации 400 Мб…
зачем так много свопа? это при том что проц не грузится..RSS до 4 мб..
или делаю чтото не так?



Офлайн

#2 Сен. 14, 2009 11:38:07

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

threading и virtMEM

вот неплохая свежая ссылка по локам и производительности http://www.dabeaz.com/blog/2009/09/python-thread-synchronization.html

Офлайн

#3 Сен. 14, 2009 14:26:59

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

threading и virtMEM

каждому потоку нужно место для стека. Вот и набегает…



Офлайн

#4 Сен. 14, 2009 14:33:02

goblin_maks
От:
Зарегистрирован: 2008-12-10
Сообщения: 110
Репутация: +  0  -
Профиль   Отправить e-mail  

threading и virtMEM

да..но что он в этот стек напихивает на 400 Мб…?



Офлайн

#5 Сен. 14, 2009 21:02:47

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

threading и virtMEM

goblin_maks
да..но что он в этот стек напихивает на 400 Мб…?
ничего - это резерв



Офлайн

#6 Сен. 14, 2009 22:20:27

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

threading и virtMEM

reserved, but not committed pages.
Немного стека занимает сам питон для каждого потока (python frames лежат на C стеке). А еще резирвируется несколько мегабайтов на поток (зависит от версии операционки, на линуксе можно поменять через ulimit).
400 MB - это, должно быть, зарезервированный объем. Реально используемый объем должен быть меньше.
Или у тебя не так?



Офлайн

#7 Сен. 15, 2009 08:58:24

goblin_maks
От:
Зарегистрирован: 2008-12-10
Сообщения: 110
Репутация: +  0  -
Профиль   Отправить e-mail  

threading и virtMEM

да нет..все так..но просто посмотрел..что указатель поотока занимает 8 К.. плюс стек…ну думаю ~400 Мб не наберется.. и еще смутили показания vmstat a …котороые до и после старта практически не изменились..зато в top показания просто убили…вот и решил узнать кто правду показывает а кто врет..



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version