Comments 62
Скорее всего TSC(тот что вы читаете при помощи RDTSC) тикает в разных ядрах по разному. При старте биоса стартует всегда одно ядро(нулевое) и уже потом специальный код стартует остальные ядра, потому на разных ядрах может оказаться разное значение TSC. Винда кидает процессы между ядрами. Когда вы выставляете Affinity. Кстати TSC ещё и переполняться может за долгое время работы, ничего в этом страшного нет. Мы даже писали в него с драйвера, всё прекрасно работает. Вообще от использования TSC надо уходить. На многоядерных машинах с плавающей частотой, да ещё и асинхронно, когда одни ядра разгоняются быстрее чем другие вообще чёрт в этом TSC сломит.
Исправление: Когда вы выставляете Affinity программа привязана к одному ядру, и глюки пропадают.
Винда действительно кидает программу между ядрами, даже если поток всего один. Глюк заключается в Cool'n'Quiet — первое ядро простаивает, второе работает, первое получает инструкцию, которую надо выполнить, второе получает за ним, но второе выполняет инструкцию раньше, чем первое, потому что первое простаивает.
Вывод однин. TSC это точно но очень опасно, лучше не использовать.
Я тоже раньше так думал, и сам имею только интел на всех компьютерах, но знакомым иногда рекомендую AMD тупо по соотношению цена/производительность. А всем топовые решения навязывать просто бессмысленно.
Просто фигею от подобных заявлений.
Вы хоть поняли о чем пост?????
Ладно объясню: человек не читает msdn, потом долго ищет баг и в результате делает неправильные выводы.
Вы хоть поняли о чем пост?????
Ладно объясню: человек не читает msdn, потом долго ищет баг и в результате делает неправильные выводы.
Да, а процессоры Интел в проблемах не были замечены…
Проблема в материнской плате!
Не разбираетесь в проблеме, зачем тролить?
Почитайте тихонечко
www.ice-graphics.com/ICEAffinity/IndexR.html
Не разбираетесь в проблеме, зачем тролить?
Почитайте тихонечко
www.ice-graphics.com/ICEAffinity/IndexR.html
К некоторым двухъядерникам от ИНтела это тоже относится.
Вывод один. процессоры это очень опасно, лучше не использовать.
У меня смутное ощущение что АМД выпускала дрова для своих процов, которые решали указанные глюки.
Но могу ошибаться.
Просто у меня никогда не было Интел процессоров, и эти глюки видел очень ограниченный промежуток времени
Но могу ошибаться.
Просто у меня никогда не было Интел процессоров, и эти глюки видел очень ограниченный промежуток времени
Та же проблема есть и в Linux при использовании clocksource TSC ядром. При смене на hpet проблема решается. :) На Intel ее нет (собственно и tsc там почему-то не выбирается по-дефолту). А диагностика та же — многократный запуск команды date из шелла может показывать разное время, которое отличается на 2-3 секунды. Отрицательные пинги и т.д.
попробовать hpet можно вот так:
echo hpet > /sys/devices/system/clocksource/clocksource0/current_clocksource
попробовать hpet можно вот так:
echo hpet > /sys/devices/system/clocksource/clocksource0/current_clocksource
Счетчик тактов уходит из-за технологий энергосбережения с понижением частоты. У Интела одно время были проблемы с TSC на SMP, но потом (начиная с P4 0xF30) они придумали «constant tsc» (гуглите, www.tomshardware.co.uk/forum/128629-10-intel ). Эта фича говорит о том, что rstsc будет выдавать монотонный и синхронный счетчик на любых ядрах вне зависимости от текущих технологий энергосбережения, от текущей частоты.
нашел на их сайте линк — Cool ‘n’ Quiet
а вот как, отключить или проверить правильно ли работает не нашел… обидно
а вот как, отключить или проверить правильно ли работает не нашел… обидно
чудеса криогенных технологий. На сайте АМД уже пару лет как фикс лежит
Эээ, ну так просто драйвер поставить и все.
CnQ отключать глупость. Запрет на использования больше одно ядра, тоже.
Ну и да, кстати минусовые пинги тоже свидетельство.
CnQ отключать глупость. Запрет на использования больше одно ядра, тоже.
Ну и да, кстати минусовые пинги тоже свидетельство.
Надо же, я не знал, что в серьёзных программах для измерения времени используется служебный регистр, не предназначенный для измерения времени.
А у меня двухядерник от Интел и в KOTOR 1 тоже были «скачки времени». Может не только у АМД такой глюк?
Вы сломали машину времени. :(
в GTA San Andreas при включенных двух ядрах атлона игра значительно ускорена, так что порой невозможно играть
поэтому после включения приходится сворачивать и отключать второй процессор в диспетчере задач
поэтому после включения приходится сворачивать и отключать второй процессор в диспетчере задач
Баг очень старый. Можно поставить оптимайзер от AMD, а еще лучше просто поставить Service Pack 3 на Windows XP
амд как обычно отжог. занимались бы лучше видяхами, хоть что-то получаться стало
Страшнейший баян про отрицательный ping на системах с amd)))
Вот инвалиды, блин, сделали бы общий регистр на все ядра. Это же самый удобный по моему способ мерять время. без оверхедов и системных вызовов, будь они неладны.
Напомнило:
Извиняюсь, случайно. Так вот:
SetTime(0,0,0,0); {засекаем время, т.е. устанавливаем системное время равным 0 ч 0 мин 0.00 сек }
For i:=1 to NumDist do
begin
d:=dist[i];
For CurGroup:=1 to d do
InsertSort(d,CurGroup);
end;
GetTime(hour,minute,second,hund); {Получаем время сортировки}
via govnokod.ru/1122
SetTime(0,0,0,0); {засекаем время, т.е. устанавливаем системное время равным 0 ч 0 мин 0.00 сек }
For i:=1 to NumDist do
begin
d:=dist[i];
For CurGroup:=1 to d do
InsertSort(d,CurGroup);
end;
GetTime(hour,minute,second,hund); {Получаем время сортировки}
via govnokod.ru/1122
просто у вас компьютер стоит вертикально, ядра находятся на разной высоте от земли, время для верхнего течет медленнее, вот разница накапливается и однажды проявляется ошибка. Положите компьютер горизонтально.
Шутка, если что ;)
Шутка, если что ;)
Забыли сказать, что это все только «In Windows Server 2000, Windows Server 2003, and Windows XP»
Прочитал статью, автору респект! А вот инженерам AMD низачет, как-то на голову не налазит, что они пропустили такой баг. ИМХО.
слоупок. эту багу лет 200 назад пофиксили и выпустили новый драйвер…
Может не в тему, но на моей тачке со включенным Cool&Quiet USB-audio временами издавал достающие клики, особенно при нагрузне на графику. Подозреваю, что причиной является то же самое.
Развели тут флуду, амд у вас во всём виновата…
Проблеме на самом деле сто лет в обед, и решаетя 1000+ способом.
Но на самом деле процессоры АМД здесь не при чём, проблема в материнской плате.
BiSeTrojanov, какой бы ты себе не вставил многоядерный процессор в свою материнскую плату, она не сможет запустить ядра синхронно, проблема в мамке, решается вполне софтово.
Детальное описание проблемы, и программка которая проверяет систему.
www.ice-graphics.com/ICEAffinity/IndexR.html
Проблеме на самом деле сто лет в обед, и решаетя 1000+ способом.
Но на самом деле процессоры АМД здесь не при чём, проблема в материнской плате.
BiSeTrojanov, какой бы ты себе не вставил многоядерный процессор в свою материнскую плату, она не сможет запустить ядра синхронно, проблема в мамке, решается вполне софтово.
Детальное описание проблемы, и программка которая проверяет систему.
www.ice-graphics.com/ICEAffinity/IndexR.html
Причина — сугубо в криворукости программистов. Им в голову не прийти, что бывают много процессорные системы. Там кроме этого ещё вагон багов есть — например, задача может поочерёдно исполняться на разный ядрах, что при эксклюзивном кэше даёт сильную потерю в производительности.
И нечего тут на AMD валить — криворуким программистам, чего не дай — все затормозят и испоганят.
И нечего тут на AMD валить — криворуким программистам, чего не дай — все затормозят и испоганят.
/usepmtimer НЕЛЬЗЯ убирать.
Вы же сами через одно место прочитали KB 895980
«you must force the AMD computer to use the PM timer by using the /usepmtimer switch.»
Вы же сами через одно место прочитали KB 895980
«you must force the AMD computer to use the PM timer by using the /usepmtimer switch.»
Sign up to leave a comment.
Временной парадокс в многоядерных процессорах AMD