idle0 wrote:Небольшое дополнение: при копировании в Соларис файлов через "цп" деиствительно происходит много паге фаултс, т.к. при этом используются меморы маппед филес
Если копировать тот-же фаил при помощи "дд" - паге фаултс нет...
Ага, посмотрел. Точно, при использовании "cp" используются мемори маппед файлс и на Линухе и на ФриБСД, скорее всего почти везде.
2. Тут ситуация такая - приводит ли использование мемори маппед файлов к увеличению щетчика. Согласно многочисленным источникам, фолты всегда возникают при использовании мемори маппед файлов независимо от размера - как минимум при первом обращении. Значит, для чистоты експеримента достаточно копировать маленький файл в цикле - фолты все равно будут, если они регистрируются. Из Солярис Интерналс следует, что при обычной нехватке виртуальной памяти ММУ генерит пейдж фолт и ета пейдж загружается через драйвер. При мемори маппед файлс ММУ ничего не генерит - все вроде бы происходит черз прямой вызов етого драйвера, соответственно, надо полагать щетчик не увеличивается.
3. Почему при експериментах в етом случае растет количество фолтов?
Надо бы убедится что фолты происходят именно изза процесса копирования, а не как побочный продукт. Ведь если мы копируем большой файл, то часть физической мемори будет занята под мемори маппед и другим достанется меньше - они то и могут произвести пейдж фолты. С другой стороны, если мемори маппед файл таки регистрирует фалты - достаточно открыть штук 5 процессов по копированию маленьких файлов. Хотя, анивей, загружатся будет какоето количество пейджей независимо от сколь мал размер файла.
В общем, как бы убедится что именно мемори маппед файлы производят пейдж фолты, а не тот у кого они память отобрали.
4. Мои експерименты на Фре - пейдж фолт такой же как и раньше, несмотря на копирование.
Верить нельзя никому - даже себе. Мне - можно!