Конкуренция за сохранение общей строки кэша со стороны всех ядер на нескольких сокетах (Xeon Scalable) приводит к замедл ⇐ C++
Конкуренция за сохранение общей строки кэша со стороны всех ядер на нескольких сокетах (Xeon Scalable) приводит к замедл
#include #include #include void threadLoop (int *PtrCounter) { структура timespec сна = {0}; пока (1) { *PtrCounter += 1; // №1: комментарий исправляет медленную реакцию // clock_nanosleep(CLOCK_MONOTONIC, 0, &sleep, NULL); // #2 раскомментирование исправляет медленную реакцию // sched_yield(); // #3 раскомментирование ничего не дает (все равно медленный отклик) } } интервал счетчика = 0; void ExitHandler (int Signum) { printf("counter=%d\n", counter); выход (0); } int main(int argc, char *argv[]) { int numThreads = get_nprocs(); интервал я; printf("используется %d потоков... (Ctrl-C для остановки)\n", numThreads); сигнал(SIGINT, ExitHandler); Glib::Thread *threadArray[numThreads]; для (я=0; я
#include #include #include void threadLoop (int *PtrCounter) { структура timespec сна = {0}; пока (1) { *PtrCounter += 1; // №1: комментарий исправляет медленную реакцию // clock_nanosleep(CLOCK_MONOTONIC, 0, &sleep, NULL); // #2 раскомментирование исправляет медленную реакцию // sched_yield(); // #3 раскомментирование ничего не дает (все равно медленный отклик) } } интервал счетчика = 0; void ExitHandler (int Signum) { printf("counter=%d\n", counter); выход (0); } int main(int argc, char *argv[]) { int numThreads = get_nprocs(); интервал я; printf("используется %d потоков... (Ctrl-C для остановки)\n", numThreads); сигнал(SIGINT, ExitHandler); Glib::Thread *threadArray[numThreads]; для (я=0; я
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение