Войти
ПрограммированиеФорумОбщее

QueryPerformanceCounter и многоядерность (6 стр)

Страницы: 13 4 5 6 7 8 Следующая »
#75
23:43, 7 окт. 2010

arabesc
> с которой обновляется счётчик в QPC, может плавать, что приводит к эффекту
> ускорения и замедления времени
вот это уже более соответствует действительности, и скажу больше подобные лаги не однократно замечал в приложениях юзающих QPC
скажу лишь что
1) они не значительны
2) я думаю разработчики могли учесть этот момент, и после увеличения частоты могли специально ее понизить, для того что бы среднее значение частоты не сильно отличалось от заявленного


#76
23:49, 7 окт. 2010

Executor
> Так и написать юзеру, наше приложение будет работать тормозно, потому что у
> тебя есть злые программы...
я на подобный вопрос ответил в посте #71 :)
я думаю серебрянной пули нет...
Executor
> "а нука давай ка я потестю, погляжу чо у тебя за процессы, чо они делают, а то
> я совсем в растеренности и не знаю какое ядро юзать"
хохмач хохмач, я думаю загруженность ядра хранится где то в системе, покрайней мере в линуксе довольно просто ее получить,
и не надо не каких тестов, Диспетчер Задач ведь как то определяет загруженность процессора, нет?

Executor
> Так и написать юзеру, наше приложение будет работать тормозно, потому что у
> тебя есть злые программы...
я думаю следует сообщить пользователю что приложение будет лагать или лагает изза того что процессор не справляется с нагрузкой,
и увидев такую надпись я бы сразу зауважал разрабочиков данного приложения, точно также как примеры из DX SDK предупреждают нас о лагах изза того что пример запущен в софтварном режиме.

#77
23:51, 7 окт. 2010

cNoNim
> вот это уже более соответствует действительности, и скажу больше подобные лаги
> не однократно замечал в приложениях юзающих QPC
> скажу лишь что
> 1) они не значительны
Смотря для чего использовать таймер. Когда использовал его для эстраполяции положения сетевых объектов, время синхронизировал, но оно могло быстро убежать на одной из машин. QPC не всегда равномерно тикает. Если аппаратура загружает шины, процессор может не получать тиков. Все зависит от архитектуры материнской платы. Именно это и наблюдал, когда интенсивно работает винчестер, часы отстают. Отстают все три виндовых таймера, но в разной степени, SystemTime страдает меньше всего.

#78
23:52, 7 окт. 2010

> Даже если ядро в данный момент свободно, это не значит, что через минуту будет также...
> В Винде всегда запущено 100500 процессов...
я говорил об этом, если у тебя весь процессор нагружен, ты хоть об стенку разбейся не закрыв пару-тройку приложений производительности не добъешся, а если ты прицепился к какому либо процесору и нагрузил его, не думаю что виндовый шедулер, будет нагружать его всякой лабудой, я не думаю что в мелкософте идиоты, так что простоя ядер не будет в любом случае, шедуллер так и будет равномерно нагружать все ядра
единственно нужно как то при старте определить менее загруженое ядро и прицепиться к нему

#79
23:56, 7 окт. 2010

KpeHDeJIb
> Да, известный эффект, он и на Интелах тоже проявляется?
не знаю, видимо, везде, где есть динамическое изменение частоты процессора, если именно она используется для счётчика, т.к. может быть и другой источник задающей частоты для счётчика таймера
в контексте QPF упоминаются два таймера: PM (Power Management) и TSC (Time Stamp Counter)
у всех свои проблемы, но чаще они упоминаются именно в контексте TSC
ядро Windows можно попросить использовать PM-таймер, указав при загрузке ключ /usepmtimer
почему это не вылезает сплошь и рядом в играх, использующих QPC? - видимо потому, что они грузят процессор почти на 100% и не дают ему возможности динамически менять частоту
хотя, с выходом более мощных процессоров, у которых появится время на простой и снижение частоты, а так же со всякими Turbo Boost, можно ждать проблем

#80
23:57, 7 окт. 2010

Zab
> SystemTime
он модет и меньше всего страдает, но согласись у него другая точность, так как частота у кристала который обновляет часы совершенно иная,
по этому я остаюсь при своей точке зрения, каждой дырке своя затычка, если тебе надо более равномерный, но менее точный таймер юзай системный, если нужен менее равномерный, но более точный юзай QPC
он так и называется

high-resolution performance counter

и таймеры на его основе называются
High-Resolution Timer
#81
0:01, 8 окт. 2010

arabesc
повторюсь... QPС не имеет прямой связи с частотой процессора, эта частота и сейчас может скакать в 3-4 раза на ноутбуках, но мы же не наблюжаем таких скачоков в играх юзающих QPC

#82
0:01, 8 окт. 2010

Executor
> в МСДН написано, что это влияет глобально на всю систему, соответственно
> выставив плохую точность, в другом приложении она тоже будет плохая...
нет, не так
из описания timeBeginPeriod
"This function affects a global Windows setting. Windows uses the lowest value (that is, highest resolution) requested by any process."

#83
0:02, 8 окт. 2010

performance counter - ни разу не таймер. Это счетчик непонятно чего. Никто не обещал, что он равномерно тикает.

#84
0:03, 8 окт. 2010

Zab
вот а я о чем? я не говорил что он таймер

#85
0:07, 8 окт. 2010

cNoNim
> QPС не имеет прямой связи с частотой процессора
QPC может использовать Time Stamp Counter
с изменением частоты меняется и темп исполнения инструкций

> эта частота и сейчас может скакать в 3-4 раза на ноутбуках, но мы же не наблюжаем таких скачоков в играх юзающих QPC
с чего бы это частоте скакать в разы, когда на процессоре запущена активно использующая его игра?

#86
0:10, 8 окт. 2010

arabesc
> QPC может использовать Time Stamp Counter
может настолько растяжимое понятие
Game Timing and Multicore Processors
Вот глупые люди наверное писали

#87
0:22, 8 окт. 2010

cNoNim
> Game Timing and Multicore Processors
> Вот глупые люди наверное писали
всё из одной статьи:

"This use of RDTSC for timing suffers from three fundamental issues:
...
1. Discontinuous values.
...
3. Variability of the CPU's frequency.
...
Recommendations
...
Use QueryPerformanceCounter and QueryPerformanceFrequency  instead of RDTSC. These APIs may make use of RDTSC, but might instead make use of a timing devices on the motherboard or some other system services that provide high-quality high-resolution timing information."

вот и думай, глупые они или как...
каким магическим способом они борются с изменением частоты, когда реализация QPF/QPC завязана на RDTSC, остаётся только гадать

#88
0:37, 8 окт. 2010

я думаю завязана или нет зависит от ОС и от доступности других источников, возможно на XP и Wind2003Srv это так и было, но имхо чем дальше тем меньше проблем с ним будет.

#89
0:41, 8 окт. 2010

есть еще SetThreadIdealProcessor

Страницы: 13 4 5 6 7 8 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.