LINUX.ORG.RU

HugePages для вычислений


0

0

Почитал я тут немного про huge pages и решил попробовать вот что. Выделяем из общей памяти кусок в гигабайт размером, состоящий из этих самых huge pages. Далее строим индексный массив длиной N = 1G/sizeof(double) и забиваем его случайными значениями от 0 до N. Потом в цикле i = 0:N-1 делаем sum += array[index[i]]. Время работы цикла сравниваем с аналогиным циклом, в котором используется массив, выделенный простым new.

Так вот, первый цикл работает в 2 раза медленнее, чем второй. Я не понимаю почему. Кто может объяснить?


видимо, потому что частота page faults остается почти такой же как и для маленьких страниц, зато цена каждого page fault становится выше.

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

Как-то не похоже, потому что оно начинает отставать, когда разброс индексов превышает 1024. А до этого просто с той же скоростью работает.

yz
() автор топика
Ответ на: комментарий от yz

VTune показывает для массива из huge pages в 1000 раз меньше DTLB_MISS событий и в 4 раза больше CPU_UNHALTED событий. Ну, и тормозит оно соответственно в 4 раза больше.

Что-то как-то не так с этими огромными страницами...

yz
() автор топика
Ответ на: комментарий от yz

Зато в кэш промахивается в 8 раз больше!

yz
() автор топика
Ответ на: комментарий от true_admin

Если памяти - не десятки-сотни гигабайт, то не нужны.

mv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.