Я рекомендую Вам генерировать открытый XML формата файл Excel, намного более гибко, чем CSV.
Read , Генерирующий файл Excel в ASP.NET для большего количества информации
Используйте sched_setaffinity
( это зависит от Linux ).
Зачем планировщику переключать потоки между разными процессорами? Что ж, представьте, что ваш поток в последний раз выполнялся на процессоре 1 и в настоящее время ожидает повторного выполнения расписания. Тем временем на процессоре 1 в настоящее время выполняется другой поток, но процессор 2 свободен. В этой ситуации планировщику разумно переключить ваш поток на процессор 2. Однако сложный планировщик постарается избежать «переброски» потока между процессорами больше, чем необходимо.
Вы можете сделать это из bash. Есть замечательная команда taskset
, с которой я познакомился в этом вопросе (вы также можете найти ценное обсуждение того, как там должен работать планировщик). Команда берет pid процесса и связывает его с конкретным процессором (ами).
taskset -c 0 -p PID
привязывает процесс с PID к процессору (ядру) номер 0.
Какое отношение он имеет к потокам? Каждому потоку назначается идентификатор с такими же правами, как у pid, также известный как «tid». Вы можете получить это с помощью системного вызова gettid
. Или вы можете посмотреть это, например, в программе top
, нажав H (некоторые процессы будут разделены на множество, казалось бы, одинаковых записей с разными pid - это потоки).