бездонная мишень?

Вы не должны делать ничего специального: это - задание ядра для решения, какой поток продолжается, который ЦП, и это делает намного лучшее задание, чем человек мог.

Однако нет никакого смысла из наличия 24 центральных процессоров, если у Вас нет по крайней мере 24 параллельных потоков для выполнения. Программы волшебно не пойдут быстрее, если больше центральных процессоров будет доступно: только программы, которые кодируются, чтобы иметь несколько параллельных потоков, извлекут выгоду, и много программ не извлекут выгоду, не потому что они записаны нижним способом, но потому что то, что они делают, по сути не parallelizable.

Программа с параллельными потоками вычисления N извлечет выгоду из до центральных процессоров N (хотя она не могла бы пойти времена N быстрее, потому что синхронизация между потоками занимает время). Выполнение M различные программы, которые не взаимодействуют очень, если вообще так же использует в своих интересах центральные процессоры M (или больше, чем это, если программы являются многопоточными).

Существует несколько случаев, где ручное вмешательство необходимо для использования в своих интересах параллелизма. Если Вы запускаете несколько задач обработки данных, заботитесь, что они порождены параллельно (с немного по одной задаче на ЦП), а не один за другим. Например, при создании программного обеспечения, передайте -j опция к make. Посмотрите несколько других примеров и объяснений:

При выполнении веб-сервера все веб-серверы, разработанные для больших нагрузок, способны использовать параллелизм. Apache используется в качестве тестового сценария при оценке выполнения оптимизации в ядре Linux. Остерегайтесь однако, что параллелизм в ЦП только помогает, если нет никакого другого узкого места, такого как конкуренция из-за пропускной способности ввода - вывода или доступа к базе данных.

3
08.07.2014, 20:22
1 ответ

/dev/fd/0 является стандартным входом текущего процесса; tee записывает его в файл(ы), который(ые) вы даете, и в stdout. Таким образом, tee читает (пустую) строку, затем записывает эту строку как в stdout (sed), так и в свой собственный вход, где читает только что написанную строку, записывает ее в stdout и свой собственный вход, и т.д., создавая бесконечный цикл из (пустых) строк*. Команда sed просто печатает номер строки, а затем строку.

echo --> tee --> sed
      ^---+

* Когда предоставлено больше входных данных, чем просто echo, эта команда будет перебирать входные данные, повторяя их снова и снова.

Примечание: OSX (BSD) не позволяет писать в /dev/fd/0, так что вы не можете этого сделать.

.
7
27.01.2020, 21:12

Теги

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