Page fault
-
- Уже с Приветом
- Posts: 2846
- Joined: 28 Jun 2000 09:01
- Location: Milwaukee, WI
Page fault
Вопрос про UNIX/Solaris. Что такое page fault и можно ли по большому колличеству page faults судить о недостатке памяти в сервере или нет?
Я считаю что каждая disk i/o operation порождает page fault, т.e. запись/чтение файла и т.д. А мне говорят что page fault бывает
только в случае paging-a, когда например процесс обращается к
странице в памяти, которая была paged out из-за нехватки памяти...
Я считаю что каждая disk i/o operation порождает page fault, т.e. запись/чтение файла и т.д. А мне говорят что page fault бывает
только в случае paging-a, когда например процесс обращается к
странице в памяти, которая была paged out из-за нехватки памяти...
moria# show running-config
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Re: Page fault
idle0 wrote:Вопрос про UNIX/Solaris. Что такое page fault и можно ли по большому колличеству page faults судить о недостатке памяти в сервере или нет?
aga
idle0 wrote:Я считаю что каждая disk i/o operation порождает page fault, т.e. запись/чтение файла и т.д. А мне говорят что page fault бывает
только в случае paging-a, когда например процесс обращается к
странице в памяти, которая была paged out из-за нехватки памяти...
Правильно говорят

Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 2846
- Joined: 28 Jun 2000 09:01
- Location: Milwaukee, WI
Вопрос был такой: приходят ко мне друзья и говорят - мы сеичас померяем все сервера (iz Patrol-a), и везде где high rate of page faults - будем вас иметь за то что в системе недостаточно памяти.
А я им говорю - отчепитесь, у вас там high disk i/o и поетому то high rate of page faults.
P.S. В Solaris весь disk i/o сделан через paging. Если копировать большой файл - через "sar -p" видно большое колличество vflt/s.
Так что по моему я прав...
А я им говорю - отчепитесь, у вас там high disk i/o и поетому то high rate of page faults.
P.S. В Solaris весь disk i/o сделан через paging. Если копировать большой файл - через "sar -p" видно большое колличество vflt/s.
Так что по моему я прав...
moria# show running-config
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
idle0 wrote:Вопрос был такой: приходят ко мне друзья и говорят - мы сеичас померяем все сервера (из Патрол-а), и везде где хигх рате оф паге фаултс - будем вас иметь за то что в системе недостаточно памяти.
А я им говорю - отчепитесь, у вас там хигх диск и/о и поетому то хигх рате оф паге фаултс.
П.С. В Соларис весь диск и/о сделан через пагинг. Если копировать большой файл - через "сар -п" видно большое колличество вфлт/с.
Так что по моему я прав...
Не верю. Пейдж фолт - когда запрошенная страница памяти не есть в мемори и загружается из свопа. Вы наверное, когда копируете большой файл аллокируете много мемори - используйте маленький буффер и увидите.
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Timberwolf wrote:A. Fig Lee wrote:idle0 wrote:Вопрос был такой: приходят ко мне друзья и говорят - мы сеичас померяем все сервера (из Патрол-а), и везде где хигх рате оф паге фаултс - будем вас иметь за то что в системе недостаточно памяти.
А я им говорю - отчепитесь, у вас там хигх диск и/о и поетому то хигх рате оф паге фаултс.
П.С. В Соларис весь диск и/о сделан через пагинг. Если копировать большой файл - через "сар -п" видно большое колличество вфлт/с.
Так что по моему я прав...
Не верю. Пейдж фолт - когда запрошенная страница памяти не есть в мемори и загружается из свопа. Вы наверное, когда копируете большой файл аллокируете много мемори - используйте маленький буффер и увидите.
A Fig Lee, если я правильно помню, Solaris использует memory mapping для file I/O. Грубо говоря, файл объявляется swap-нутым на диск и все обращения к файлу идут через обращения к памяти. Естественно, если запрошенного участка файла нет в памяти, происходит отказ страницы и подкачка с диска.
Поиск по Google выдает в числе первых ссылок
http://www.cs.uleth.ca/~holzmann/C/system/mmap.html
Дальше рыться лень...
По-моему, ето не из той оперы. Во первых, Как ето поможет? Открываешь файл и пишешь туда - при чем тут мемори маппед файл?
2. При меморы маппед файл изменения в мемори синхронизируются с изменениями в реальном файле, так что своп тут не при чем, ИМХО.
3. Если Вы имеете ввиду мемори маппед с МАП_АНОН - тады да, своп - но в етом случае file IO не при чем.
4. Если запрошенного участка нет в памяти - ето говорит, что памяти не хватает.
5. АФАИК , Линух для malloc использует mmap - ну чтото я не вижу никаких фолтов с 1Гиг памяти.

Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Timberwolf wrote:A. Fig Lee wrote:Вы наверное, когда копируете большой файл аллокируете много мемори - используйте маленький буффер и увидите.
Небольшое дополнение. Системы, копирующие файл через swap
read src from disk->write swap to disk->read swap from disk->write dest to disk
не имеют права на существование, IMHO..
Все системы делают ето, когда не хватает памяти. Когда память есть - никто не делает.
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Timberwolf wrote:Я, наверное, слишком кратко выразилась. Впрочем, детальные разъяснения не входили в мои планы. Да и сейчас не входят, но начальный импульс дать могу. Открытие файла как memory-mapped сводится к объявлению в системе этого файла уже находящемся в виртуальной памяти и swap-нутым на диск таким образом, что его swap точно совпадает с открываемым файлом на диске. ...
1.То есть система имеет как бы 2 копии - в свапе и обычный файл, так? Зачем?
2.Короче - свапнутым на диск он будет только если памяти физической не хватает.
3. Свап - ето и есть память - виртуальная. Если хватает физической, савп используется 0%.
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Timberwolf wrote:A. Fig Lee wrote:Timberwolf wrote:A. Fig Lee wrote:Вы наверное, когда копируете большой файл аллокируете много мемори - используйте маленький буффер и увидите.
Небольшое дополнение. Системы, копирующие файл через swap
read src from disk->write swap to disk->read swap from disk->write dest to disk
не имеют права на существование, IMHO..
Все системы делают ето, когда не хватает памяти. Когда память есть - никто не делает.
В системах, поддерживающих memory-mapped files (MMF) это может произойти только в случае неграмотности разработчика приложения (см. предыдущий постинг о MMF) - но это отдельный (клинический) случай.
1. Все популярные более менее поддерживают mmap.
2. Чудес на свете не бывает - если запрошено больше памяти чем есть физической - будет участвовать своп, независимо от того - мемори маппед файл или нет.
3. Предыдущий постинг посмотрел. Ничё не понял, кроме намеков что мне надо бы подучить ето дело..

Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
A. Fig Lee wrote:1.То есть система имеет как бы 2 копии - в свапе и обычный файл, так? Зачем?
2.Короче - свапнутым на диск он будет только если памяти физической не хватает.
3. Свап - ето и есть память - виртуальная. Если хватает физической, савп используется 0%.
1. Система имеет ровно одну копию - сам файл одновременно является файлом подкачки.
2. Любой файл открытый как memory mapped сам себе файл подкачки.
3. Для регионов виртуальной памяти, отведённых для memory mapped files, эти файлы и являются backing storage. Для других регионов виртуальной памяти, куда явно не отображаются файлы, в качестве backing storage используется swap.
Это совершенно обычное решение для систем, поддерживающих memory mapped файлы. Зачем занимать дополнительное место на стандартном swap, тратить IO и CPU на копирование с диска на диск, если любой файл уже сам по себе является местом на диске, куда можно отобразить регион виртуальной памяти? Преимущества - очевидны.
Cheers
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
Проведем эксперимент, включаем top и смотрим куда идет память. Затем включаем копирование большого количеста файлов и смотрим, что изменилось.
Память расходуется на:
- процессы
- буфера
- дисковый кэш
В исходном состоянии использование свопа - 0
Запускаем копирование. Растет дисковый кэш и немножко буфера. Появляется использвание свопа.
Т.е. при большом количестве дискового ввода/вывода память перераспределяется в пользу дискового кэша и из-за этого растет своп. Растет своп - растет количество page faults.
Система - Linux, kernrel 2.4.22
Или вы не об этом?
Память расходуется на:
- процессы
- буфера
- дисковый кэш
В исходном состоянии использование свопа - 0
Запускаем копирование. Растет дисковый кэш и немножко буфера. Появляется использвание свопа.
Т.е. при большом количестве дискового ввода/вывода память перераспределяется в пользу дискового кэша и из-за этого растет своп. Растет своп - растет количество page faults.
Система - Linux, kernrel 2.4.22
Или вы не об этом?
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Timberwolf wrote:tengiz wrote:A. Fig Lee wrote:1.То есть система имеет как бы 2 копии - в свапе и обычный файл, так? Зачем?
2.Короче - свапнутым на диск он будет только если памяти физической не хватает.
3. Свап - ето и есть память - виртуальная. Если хватает физической, савп используется 0%.
1. Система имеет ровно одну копию - сам файл одновременно является файлом подкачки.
2. Любой файл открытый как memory mapped сам себе файл подкачки.
3. Для регионов виртуальной памяти, отведённых для memory mapped files, эти файлы и являются backing storage. Для других регионов виртуальной памяти, куда явно не отображаются файлы, в качестве backing storage используется swap.
Это совершенно обычное решение для систем, поддерживающих memory mapped файлы. Зачем занимать дополнительное место на стандартном swap, тратить IO и CPU на копирование с диска на диск, если любой файл уже сам по себе является местом на диске, куда можно отобразить регион виртуальной памяти? Преимущества - очевидны.
Tengiz, спасибо большое! Ваше разъяснение существенно понятней моего.
Ясен пень. Тем более что оно противоречит Вашему.
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
f_evgeny wrote:Проведем эксперимент, включаем top и смотрим куда идет память. Затем включаем копирование большого количеста файлов и смотрим, что изменилось.
Память расходуется на:
- процессы
- буфера
- дисковый кэш
В исходном состоянии использование свопа - 0
Запускаем копирование. Растет дисковый кэш и немножко буфера. Появляется использвание свопа.
Т.е. при большом количестве дискового ввода/вывода память перераспределяется в пользу дискового кэша и из-за этого растет своп. Растет своп - растет количество page faults.
Система - Linux, kernrel 2.4.22
Или вы не об этом?
1. Примерно об етом. У меня на Линухе - 1 гиг.
Если сислог не растет - массовое копирование файлов (30 симултанеос процессов в течение многих минут с файлами < 1 мб) не приводят к использованию свопа.
Red Hat 7.2
Сколько у Вас было памяти свободной изначально и как большие файлы Вы используете?
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
A. Fig Lee wrote:f_evgeny wrote:Проведем эксперимент, включаем top и смотрим куда идет память. Затем включаем копирование большого количеста файлов и смотрим, что изменилось.
Память расходуется на:
- процессы
- буфера
- дисковый кэш
В исходном состоянии использование свопа - 0
Запускаем копирование. Растет дисковый кэш и немножко буфера. Появляется использвание свопа.
Т.е. при большом количестве дискового ввода/вывода память перераспределяется в пользу дискового кэша и из-за этого растет своп. Растет своп - растет количество page faults.
Система - Linux, kernrel 2.4.22
Или вы не об этом?
1. Примерно об етом. У меня на Линухе - 1 гиг.
Если сислог не растет - массовое копирование файлов (30 симултанеос процессов в течение многих минут с файлами < 1 мб) не приводят к использованию свопа.
Red Hat 7.2
Сколько у Вас было памяти свободной изначально и как большие файлы Вы используете?
Я специально взял WS где памяти поменьше, е ее использую как Xterminal. Памяти - 48 Mb, свободно было несколько мег, так как в таких условиях Линукс использует всю память, свободную - максимально под кэш.
Файлы - я недолго думая взял и сделал cp /usr /tmp
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
f_evgeny wrote:1. Примерно об етом. У меня на Линухе - 1 гиг.
Если сислог не растет - массовое копирование файлов (30 симултанеос процессов в течение многих минут с файлами < 1 мб) не приводят к использованию свопа.
Red Hat 7.2
Сколько у Вас было памяти свободной изначально и как большие файлы Вы используете?
Я специально взял WS где памяти поменьше, е ее использую как Xterminal. Памяти - 48 Mb, свободно было несколько мег, так как в таких условиях Линукс использует всю память, свободную - максимально под кэш.
Файлы - я недолго думая взял и сделал cp /usr /tmp[/quote]
Батенька, ето не годится!
Исходный пойнт был - при копировании файлов ВСЕГДА используется свап независимо от размеров свободной памяти, и как следствие количество пейдж фолтов не может указывать на недостаток физической памяти.
Мой пойнт - все до лампочки, независимо от операции, когда все можно поместить в физическую память, своп не будет использован. То есть количество пейдж фолтов прймао говорит о недостатке физической памяти.
А про операционки, копирующие через своп - я вооще молчу...
В Линухе, надо мегабайт 100 свободных физических иметь для експеримента - и запустите потом 3-4 процесса по копированию мегабайтного файла.
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
A. Fig Lee wrote:f_evgeny wrote:1. Примерно об етом. У меня на Линухе - 1 гиг.
Если сислог не растет - массовое копирование файлов (30 симултанеос процессов в течение многих минут с файлами < 1 мб) не приводят к использованию свопа.
Red Hat 7.2
Сколько у Вас было памяти свободной изначально и как большие файлы Вы используете?
Я специально взял WS где памяти поменьше, е ее использую как Xterminal. Памяти - 48 Mb, свободно было несколько мег, так как в таких условиях Линукс использует всю память, свободную - максимально под кэш.
Файлы - я недолго думая взял и сделал cp /usr /tmp
Батенька, ето не годится!
Исходный пойнт был - при копировании файлов ВСЕГДА используется свап независимо от размеров свободной памяти, и как следствие количество пейдж фолтов не может указывать на недостаток физической памяти.
Мой пойнт - все до лампочки, независимо от операции, когда все можно поместить в физическую память, своп не будет использован. То есть количество пейдж фолтов прймао говорит о недостатке физической памяти.
А про операционки, копирующие через своп - я вооще молчу...
В Линухе, надо мегабайт 100 свободных физических иметь для експеримента - и запустите потом 3-4 процесса по копированию мегабайтного файла.[/quote]
Пардон, неясно выяснился. Мой опыт показывает, что при копировании файлов может возрасти количество пейдж фолтов, но не непосредственно, а из-за увеличения количества памяти, занятого под буфера.
Дальше, все будет только хуже. Оптимист.