2013-09-18 3 views
0

Есть ли какой-либо простой тест производительности для обнаружения HT включен или нет? Например, мне нужен он в случае, когда максимальное количество CPU ограничено ядром linux (NR_CPUS) и не имеет доступа к BIOS.Гиперпоточность - по какому тесту я могу проверить, включено ли оно или нет?

Можете ли вы посоветовать любой код для обнаружения включен HT?

Я взглянул here или here, но это не ответы. Thanx.

+0

Более точно: Как обнаружить наличие HT без флагов чтения? –

ответ

1

В Linux я думаю, что вы можете прочитать /proc/cpuinfo, но после того, что вы должны сделать немного мышления, чтобы увидеть, есть ли у нас многоядерный процессор, или HT включен центральный процессор и т.д.

Во-первых, flags даст вам поддерживаемую функции , и ht будет отображаться поддержка гиперпотока.

Затем вы должны проверить, является ли рассчитывать родственный матчи ядро ​​рассчитывать на каждом процессоре, так что ищите ИД CPU, и вычесть оттуда. (Так что, если подсчет совпадений совпадает с количеством ядер -> нет HT) Более подробную информацию можно найти здесь: http://richweb.com/cpu_info

+0

Хорошо. Я благодарен за ответ. Но я не интересен ни в каких флагах. Мне нужно проверить, какой тест может показать разницу между системой с включенным HT и отключенным. Не любая программа, которая считывает флаги, но программа, которая делает что-то вроде умножения матрицы или аналогичного. –

0

Проверка флагов даст вам четкий ответ, тогда как проверка производительности (в частности, если программная проверка результата) будет иметь некоторая неопределенность. Для какой характеристики характеристики является гиперпотоковая (HT) подпись, которую мы будем тестировать? HT обеспечивает лучшую производительность, когда потоки выполняют другую работу, где разные определяются на основе микроархитектуры. Напротив, отдельные ядра имеют небольшую корреляцию производительности из-за выполнения кода на каждом ядре (некоторые факторы все еще существуют как пропускная способность памяти или общие кэши).

Существует множество комбинаций, для которых вы можете проверить; Я опишу одно возможное решение здесь. Предполагая, что система имеет по крайней мере два ядра, которые также могут включать HT. Это представляет собой 4 логических процессора (LP), по которым могут быть запланированы потоки. Создайте однопоточную программу, которая может подчеркнуть ресурсы одного ядра. Теперь дублируем эту работу, чтобы у нас было два потока, которые могут работать независимо. Чтобы затем проверить производительность, задайте аффинность планирования потоков к различным парам LP в системе. Затем измерьте производительность для работы на разных парах. Дроссельная пара даст отличную производительность, чем объединение отдельных ядер.

При написании теста производительности у вас есть обычные проблемы с измерением производительности. Имеет ли механизм измерения необходимую гранулярность? Изменена ли переменная, которую вы тестируете (HT против ядра), но нет других переменных? Например, кеш в одном состоянии перед каждым тестом? Или, если некоторые ядра разделяют кеши, значит, спаривание их в тесте даст отличную производительность от других пар? Теперь, если вы все это сделаете, вы должны увидеть разные результаты в зависимости от того, какая пара LP вы запланировали для своей работы.

+0

Итак, ответом на мой вопрос является поиск самого большого разделяемого блока, поиск операции блока и запуск пары потоков, которые выполняют операцию в цикле. Нити должны быть прикреплены к контрольной паре сердечников. Производительность операций должна отличаться в два раза, если HT включен или нет. Я прав? –

2

Существует другой способ - система/sys/file, она должна быть более упорядоченной, чем/proc. /proc/cpuinfo зависит от версий ядра;

кошка/SYS/устройства/системы/CPU/cpu0/топология/thread_siblings

дает список аппаратных потоков, которые работают вместе с основной CPU0.

https://www.kernel.org/doc/Documentation/cputopology.txt

4) /sys/devices/system/cpu/cpuX/topology/thread_siblings: 

    internal kernel map of cpuX's hardware threads within the same 
    core as cpuX 
Смежные вопросы