Свяжите потоки с процессорами

Я рекомендую Вам генерировать открытый XML формата файл Excel, намного более гибко, чем CSV.
Read , Генерирующий файл Excel в ASP.NET для большего количества информации

7
задан Ben 22 September 2009 в 09:42
поделиться

2 ответа

Используйте sched_setaffinity ( это зависит от Linux ).

Зачем планировщику переключать потоки между разными процессорами? Что ж, представьте, что ваш поток в последний раз выполнялся на процессоре 1 и в настоящее время ожидает повторного выполнения расписания. Тем временем на процессоре 1 в настоящее время выполняется другой поток, но процессор 2 свободен. В этой ситуации планировщику разумно переключить ваш поток на процессор 2. Однако сложный планировщик постарается избежать «переброски» потока между процессорами больше, чем необходимо.

17
ответ дан 6 December 2019 в 07:07
поделиться

Вы можете сделать это из bash. Есть замечательная команда taskset , с которой я познакомился в этом вопросе (вы также можете найти ценное обсуждение того, как там должен работать планировщик). Команда берет pid процесса и связывает его с конкретным процессором (ами).

taskset -c 0 -p PID

привязывает процесс с PID к процессору (ядру) номер 0.

Какое отношение он имеет к потокам? Каждому потоку назначается идентификатор с такими же правами, как у pid, также известный как «tid». Вы можете получить это с помощью системного вызова gettid . Или вы можете посмотреть это, например, в программе top , нажав H (некоторые процессы будут разделены на множество, казалось бы, одинаковых записей с разными pid - это потоки).

8
ответ дан 6 December 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: