Robert Watson опубликовал (http://kerneltrap.org/node/5191) список системных вызовов, которые еще приводят к полной блокировке (giant lock) на SMP системах.
Giant lock еще присутствует в вызовах управляющих расширенными атрибутами файлов (extattr_*), NFS (nfsclnt), NTP (ntp_gettime), монтированием ФС (mount, unmount, nmount), асинхронным вводом/выводом (aio_*, lio_*).URL: http://kerneltrap.org/node/5191
Новость: http://www.opennet.me/opennews/art.shtml?num=5538
Очень хорошо если NFS и асихронный ввод-вывод будут MPSAFE.
Интересно было бы почитать подробнее об этих Гиант-Локах. Чего это вдруг все на них окрысились? IMHO, на двухпроцессорной (и даже, скорее всего, на четырёхпроцесорной) системе они не так уж вредны...
На эту тему уже писали
Giant Lock - это глобальная блокировка в коде ядра,
используемая чтобы другой процессор или thread не залез в ненужное время
в ненужное место и чего-нибудь не испортил.
Отсутствие глобальной блокировки должно ускорять работу и 1-CPU машин, а не только 2-CPU и 4-CPU.
Насколько я понял Giant Lock заменяют на множество локальных блокировок. Локальные блокировки относятся уже к какой-то конкретной части ядра.
Множество локальных блокировок позволяет процессам меньше затыкаться на Giant Lock, и таким образом исполнение получается более быстрым.
Всё верно только однопроцессорным от этого не легче так как одновременно может испонятся только либо код процесса либо ядра, либо второго процесса. Возможно только для HT будет какая то разница.
> Giant Lock - это глобальная блокировка в коде ядра, используемая чтобы другой процессор или thread не залез в ненужное время в ненужное место и чего-нибудь не испортил.Это-то я и сам прекрасно понимаю. Меня интересуют подробности, в т.ч. оценки потерь производительности на реально работающих системах.
> Отсутствие глобальной блокировки должно ускорять работу и 1-CPU машин, а не только 2-CPU и 4-CPU.А вот в это, простите, я не верю - на однопроцессорных системах Giant Lock д.б. проще и эффективнее локальных блокировок (собственно, Giant Lock - это наследие однопроцессорных систем, на которых развивались первые версии Linux и *BSD).
в НФС у меня это приводило к кордампу .
в 4.10