>> - Параллельную работу userland-кода - это главное и это есть; >> - Параллельную работу с ядром из нескольких процессов - мешает giant lock; >> - Параллельную работу ядра с устройствами, в частности, > По-моему тут набор взаимоисключающих параграфов написан. Первое - главное? Только для чисто > вычислительных задач (CPU-bound нежели I/O bound). Ну да, крякеры мд5 на > скорость тормзить не будут. А вот I/O bound программы (столь типичные > для серверов) будут часто стоять колом ожидая у моря погоды при > такой "многопроцессорности".Если не будет параллельной работы userland-кода, то весь супер-пупер-быстрый ввод-вывод будет всё равно упираться в не успевающую его прожёвывать программу. Единственное исключение - ситуации, когда ввод-вывод полностью или практически полностью обрабатывается ядром: та же маршрутизация сетевых пакетов, например (т.е. сквозь машину, а не к ней или от неё). Почти все задачи практического применения - либо в первую очередь нагружают вычислительные мощности, либо нагружают всё подряд. Так что параллельная работа userland-кода всё-таки важнее: для десктопа, для web-сервера, для СУБД... Вот, скажем, почтовый релей или распределённая лёгковесная СУБД, например, уже может при определённых условиях упереться в ввод-вывод, да. Но и в них большая часть работы идёт в userland'е.
|