• Шумоизоляция арок автомобиля и шумоизоляция автомобиля дешево Москва

    шумоизоляция арок автомобиля и шумоизоляция автомобиля дешево Москва

    mos-olimp.ru





Linux Kernel (Ядро линукса) (часть 3)


Утилизация страниц из кэша элемента каталога

Функция shrink dcache memory является сокращающей для кэша элементов каталога. Она ищет в кэше неиспользуемые элементы каталога, т. е. объекты, на которые не ссылается ни один процесс и освобождает их.

Поскольку объекты в кэше элементов каталога выделяются с помощью slab- аллокатора, фуНКЦИЯ shrink dcache memory МОЖет освободить неСКОЛЬКО участков памяти, в результате чего некоторые страничные кадры будут утилизированы функцией cache reapO Кроме того, кэш элементов каталога действует как контроллер кэша индексных дескрипторов. Следовательно, когда элемент каталога освобождается, страницы, содержащие соответствующий индексный дескриптор, могут стать неиспользуемыми” и, в конечном счете, будут освобождены.

Функция shrink dcache memory принимает в качестве параметров количество страничных кадров, которое нужно освободить, и GFP-маску. Она начинает работу с проверки, сброшен ли бит gfp fs в GFP-маске. Если сброшен, функция возвращает-1, потому что освобождение элемента каталога может запустить какую-либо операцию в дисковой файловой системе. Собственно утилизация страничных кадров выполняется функцией prune dcache . Эта функция сканирует список неиспользуемых элементов каталога (чья голова хранится в переменной dentry unused), пока не достигнуто требуемое количество освобожденных объектов, или не будет просканирован весь список. Для каждого объекта, к которому давно не было обращений, функция выполняет
следующие действия:
1. Удаляет объект элемент каталога” из хеш-таблицы элементов каталога, из списка элементов каталога в его родительском каталоге и из списка элементов каталога индексного дескриптора-владельца.
2. Уменьшает счетчик обращений индексного дескриптора элемента каталога, для чего вызывает метод d iput, если он определен для данного элемента каталога, или функцию iput .
3. Вызывает метод d reiease элемента каталога, если метод определен.
4. Вызывает функцию caii_rcu для регистрации функции обратного вызова, которая удалит элемент каталога. В свою очередь, функция обратного вызова воспользуется функцией kmem_cache_f гее , Чтобы вернуть объект slab-аллокатору
5. Уменьшает счетчик обращений родительского каталога.

В конце своей работы функция shrink dcache memory возвращает значение, зависящее от количества неиспользуемых элементов каталога, оставшихся в кэше. Более точно, возвращенное значение равно количеству неиспользуемых элементов каталога, умноженному на 100 и разделенному на значение глобальной переменной syscti vfs cache pressure. По умолчанию эта переменная равна 100, и возвращенное значение в точности равно количеству неиспользуемых элементов каталога. Однако системный администратор может модифицировть эту переменную в файле /proc/sys/vm/vfs_cache_pressure или с помощью системного вызова sysctio. Если установить эту переменную в значение, меньшее 100, функция shrink siabo утилизирует меньше страниц из кэша элементов каталога (и кэша индексных дескрипторов) по отношению к количеству страниц, утилизированных из списков LRU. И наоборот, установка этой переменной в значение, большее 100, заставляет функцию shrink siabo утилизировать больше страниц кэша элементов каталога и кэша индексных дескрипторов по отношению к количеству страниц, утилизированных из списков LRU.

Предыдущая страница | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | Следующая страница




Возможно, Вас также заинтересует:

ОС Knoppix - это Linux без проблем

ВведениеЕсли вы цените свое время, умеете считать деньги и знаете стоимость информации, то эта книга для вас. А так как к книге прилагается компакт- диск с готовой к работе операционной системой Knoppix Live CD, то лишь достаточно вставить его в привод и перегрузить компьютер,...

Linux Kernel (Ядро линукса) (часть 1)

Спин-блокировкаСпин-блокировка необходима в многопроцессорной системе, потому что могут возникнуть другие прерывания того же типа, и другие процессоры могут приступить к их обработке. Без спин-блокировки к главному дескриптору прерывания могли бы обратиться сразу несколько процессоров. Как мы...

Linux Kernel (Ядро линукса) (часть 2)

Копирование при записи В системах Unix первых поколений создание процесса было реализовано довольно неуклюже: получив системный вызов fork о, ядро в буквальном смысле дублировало все адресное пространство родителя и присваивало копию процессу-потомку. Такая операция...

Linux Kernel (Ядро линукса) (часть 3)

Буферы блоков и головы буферовУ каждого буфера есть дескриптор голова буфера, имеющий тип buffer head. Этот дескриптор содержит всю информацию, необходимую ядру для работы с блоком, так что перед обработкой блока ядро обязательно проверяет голову...