The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Список системных вызовов FreeBSD, которые не избавлены от giant lock

30.05.2005 08:39

Robert Watson опубликовал список системных вызовов, которые еще приводят к полной блокировке (giant lock) на SMP системах.

Giant lock еще присутствует в вызовах управляющих расширенными атрибутами файлов (extattr_*), NFS (nfsclnt), NTP (ntp_gettime), монтированием ФС (mount, unmount, nmount), асинхронным вводом/выводом (aio_*, lio_*).

  1. Главная ссылка к новости (http://kerneltrap.org/node/519...)
Лицензия: CC-BY
Тип: К сведению
Короткая ссылка: https://opennet.ru/5538-kernel
Ключевые слова: kernel, freebsd, lock
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (6) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Осторожный (?), 16:14, 31/05/2005 [ответить]  
  • +/
    Очень хорошо если NFS и асихронный ввод-вывод будут MPSAFE.
     
  • 1.2, Dmitry U. Karoiv (?), 16:40, 31/05/2005 [ответить]  
  • +/
    Интересно было бы почитать подробнее об этих Гиант-Локах. Чего это вдруг все на них окрысились? IMHO, на двухпроцессорной (и даже, скорее всего, на четырёхпроцесорной) системе они не так уж вредны...
     
     
  • 2.3, Осторожный (?), 08:13, 01/06/2005 [^] [^^] [^^^] [ответить]  
  • +/
    На эту тему уже писали
    Giant Lock - это глобальная блокировка в коде ядра,
    используемая чтобы другой процессор или thread не залез в ненужное время
    в ненужное место и чего-нибудь не испортил.
    Отсутствие глобальной блокировки должно ускорять работу и 1-CPU машин, а не только 2-CPU и 4-CPU.
    Насколько я понял Giant Lock заменяют на множество локальных блокировок. Локальные блокировки относятся уже к какой-то конкретной части ядра.
    Множество локальных блокировок позволяет процессам меньше затыкаться на Giant Lock, и таким образом исполнение получается более быстрым.
     
     
  • 3.4, ZOD (??), 17:10, 01/06/2005 [^] [^^] [^^^] [ответить]  
  • +/
    Всё верно только однопроцессорным от этого не легче так как одновременно может испонятся только либо код процесса либо ядра, либо второго процесса. Возможно только для HT будет какая то разница.
     
  • 3.5, Dmitry U. Karoiv (?), 21:05, 01/06/2005 [^] [^^] [^^^] [ответить]  
  • +/
    > Giant Lock - это глобальная блокировка в коде ядра, используемая чтобы другой процессор или thread не залез в ненужное время в ненужное место и чего-нибудь не испортил.

    Это-то я и сам прекрасно понимаю. Меня интересуют подробности, в т.ч. оценки потерь производительности на реально работающих системах.


    > Отсутствие глобальной блокировки должно ускорять работу и 1-CPU машин, а не только 2-CPU и 4-CPU.

    А вот в это, простите, я не верю - на однопроцессорных системах Giant Lock д.б. проще и эффективнее локальных блокировок (собственно, Giant Lock - это наследие однопроцессорных систем, на которых развивались первые версии Linux и *BSD).

     

  • 1.6, RIPper_wk (ok), 16:16, 02/06/2005 [ответить]  
  • +/
    в НФС у меня это приводило к кордампу .
    в 4.10
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру