Page fault

User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

A. Fig Lee wrote:ну что - ни у кого больше мыслей нет?

Мысли-то есть, да не о том :) - к чему тут гадать или размышлять если можно в исходники посмотреть, рас уж они доступны и если тема интересна? Операционные системы же в конце концов человеческие творения, а не малоизученные явления природы типа шаровых молний. Исходники Солярис уже вроде открыты, не говоря о FreeBSD и Linux.

P.S. Дисклеймер: мне - лень. Поэтому лезть в исходники мне не предалагать.
Cheers
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

tengiz wrote:
A. Fig Lee wrote:ну что - ни у кого больше мыслей нет?

Мысли-то есть, да не о том :) - к чему тут гадать или размышлять если можно в исходники посмотреть, рас уж они доступны и если тема интересна? Операционные системы же в конце концов человеческие творения, а не малоизученные явления природы типа шаровых молний. Исходники Солярис уже вроде открыты, не говоря о FreeBSD и Linux.

P.S. Дисклеймер: мне - лень. Поэтому лезть в исходники мне не предалагать.

Ну я уж и в книжку заглядывал и в исходники лазил. Пусть теперь кто-нибудь другой. :)
Верить нельзя никому - даже себе. Мне - можно!
User avatar
idle0
Уже с Приветом
Posts: 2846
Joined: 28 Jun 2000 09:01
Location: Milwaukee, WI

Post by idle0 »

tengiz wrote:
A. Fig Lee wrote:ну что - ни у кого больше мыслей нет?

Мысли-то есть, да не о том :) - к чему тут гадать или размышлять если можно в исходники посмотреть, рас уж они доступны и если тема интересна? Операционные системы же в конце концов человеческие творения, а не малоизученные явления природы типа шаровых молний. Исходники Солярис уже вроде открыты, не говоря о FreeBSD и Linux.

P.S. Дисклеймер: мне - лень. Поэтому лезть в исходники мне не предалагать.


Can you send me Solaris source code?
moria# show running-config
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

idle0 wrote:Can you send me Solaris source code?

Nope, sorry. But these guys (http://wwws.sun.com/software/solaris/source) can, provided that you qualify.
Cheers
User avatar
olg2002
Уже с Приветом
Posts: 990
Joined: 27 Mar 2002 10:01
Location: Palo Alto, CA

Post by olg2002 »

A. Fig Lee wrote:2. Тут ситуация такая - приводит ли использование мемори маппед файлов к увеличению щетчика. Согласно многочисленным источникам, фолты всегда возникают при использовании мемори маппед файлов независимо от размера - как минимум при первом обращении. Значит, для чистоты експеримента достаточно копировать маленький файл в цикле - фолты все равно будут, если они регистрируются. Из Солярис Интерналс следует, что при обычной нехватке виртуальной памяти ММУ генерит пейдж фолт и ета пейдж загружается через драйвер. При мемори маппед файлс ММУ ничего не генерит - все вроде бы происходит черз прямой вызов етого драйвера, соответственно, надо полагать щетчик не увеличивается.


Полная каша. Page fault возникает, когда при обращении к виртуальному адресу в таблице трансляции адресов virtal-to-physical для текущего адресного пространства остутствует информация о физической странице. Поскольку таблица эта своя для каждого адресного пространства, это не
означает, что нужной страницы нет в физической памяти. Если она присутствует в памяти и нужно только установить новый map - это minor page fault. В ином случае ее действительно нужно закачать с диска (swap or regular file) и это major page fault. Когда cp копирует файл, она действительно mmap его целиком в адресное пространство (если файл не очень большой), но затем также целиком пишет его в файл одним вызовом write. Таким образом, никакого обращения к страницам файла не происходит и никакие page faults в cp не генерятся. Они возникают ... в ядре(!) во время исполнения системного вызова write. Если копировать маленький файл в цикле, практически все page faults будут minor, поскольку файл будучи один раз закачан в физическую память будет там еще некоторое время оставаться после завершения одного cp и его страницы будут reclaimed следующим cp (при освобождении страницы она необязательно сразу же удаляется из памяти).
Короче, большой rate of page faults на Solaris не обязательно означает swapping и нехватку физической памяти.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

olg2002 wrote:
A. Fig Lee wrote:2. Тут ситуация такая - приводит ли использование мемори маппед файлов к увеличению щетчика. Согласно многочисленным источникам, фолты всегда возникают при использовании мемори маппед файлов независимо от размера - как минимум при первом обращении. Значит, для чистоты експеримента достаточно копировать маленький файл в цикле - фолты все равно будут, если они регистрируются. Из Солярис Интерналс следует, что при обычной нехватке виртуальной памяти ММУ генерит пейдж фолт и ета пейдж загружается через драйвер. При мемори маппед файлс ММУ ничего не генерит - все вроде бы происходит черз прямой вызов етого драйвера, соответственно, надо полагать щетчик не увеличивается.


Полная каша. Page fault возникает, когда при обращении к виртуальному адресу в таблице трансляции адресов virtal-to-physical для текущего адресного пространства остутствует информация о физической странице. Поскольку таблица эта своя для каждого адресного пространства, это не
означает, что нужной страницы нет в физической памяти. Если она присутствует в памяти и нужно только установить новый map - это minor page fault. В ином случае ее действительно нужно закачать с диска (swap or regular file) и это major page fault. Когда cp копирует файл, она действительно mmap его целиком в адресное пространство (если файл не очень большой), но затем также целиком пишет его в файл одним вызовом write. Таким образом, никакого обращения к страницам файла не происходит и никакие page faults в cp не генерятся. Они возникают ... в ядре(!) во время исполнения системного вызова write. Если копировать маленький файл в цикле, практически все page faults будут minor, поскольку файл будучи один раз закачан в физическую память будет там еще некоторое время оставаться после завершения одного cp и его страницы будут reclaimed следующим cp (при освобождении страницы она необязательно сразу же удаляется из памяти).
Короче, большой rate of page faults на Solaris не обязательно означает swapping и нехватку физической памяти.


У кого каша?
Я же привел уже ссылку из книжки Соалрис интерналс - ммап ето одно, а врите и реад - другое.
2. При ммап возникают фолты - читаем книжку - как минимум 1 раз при загрузке в память.
И при копировании файл мапируется в адрессное пространство независимо от того маленький он или большой - загружатся будет не весь сразу, ето другое дело.
3. По поводу циклического копирования файлов - да Вы правы, будут майнор. Не пойдет для експеримента.
Верить нельзя никому - даже себе. Мне - можно!

Return to “Вопросы и новости IT”