Хотя виртуальная память позволяет компьютерам намного проще справляться с большими и сложными приложениями, за это, как и за любую другую полезную возможность, приходится платить. В данном случае, платить производительностью — операционная система с виртуальной памятью намного сложнее операционной системы, не поддерживающей виртуальную память. Это значит, что с виртуальной памятью производительность приложения никогда не будет такой, как у приложения, расположенного в памяти целиком.
Однако опускать руки и сдаваться не стоит, ведь виртуальная память даёт огромные преимущества. И приложив некоторые усилия, всё же можно добиться хорошей производительности. Для этого необходимо проанализировать, на какие ресурсы компьютера влияет интенсивная работа подсистемы виртуальной памяти.
4.5.1. Случай с наихудшей производительностью
Давайте вспомним, о чём шла речь в данной главе, и посмотрим, какие ресурсы компьютера используются при очень большом количестве ошибок страницы и активной подкачке:
ОЗУ — вполне очевидно, что системе не хватает ОЗУ (в противном случае не было бы ошибок страницы или подкачки)
Диск — хотя активная подкачка может не отражаться на объёме дискового пространства, она негативно влияет на скорость ввода/вывода
Процессор — процессор тратит своё время на выполнение функций управления памятью и на координацию необходимых для подкачки операций ввода/вывода.
Так как эти нагрузки по природе взаимосвязаны, легко понять, как нехватка ресурсов может привести к различным проблемам производительности.
Всё, что нужно для такого сценария — компьютер с ОЗУ очень маленького объёма, большим количеством ошибок страницы, и работающий на пределе возможностей процессора или диска. При таких условиях компьютер оказывается в состояние перегрузки, что неизбежно приводит к падению производительности.
4.5.2. Случай с оптимальной производительностью
В лучшем же случае, если система настроена правильно, дополнительная нагрузка, связанная с поддержкой виртуальной памяти, минимальна:
ОЗУ — памяти достаточно для всех рабочих множеств и для обработки ошибок страницы [1]
Диск — так как число ошибок страницы ограничено, это практически не влияет на скорость работы диска
Процессор — большая часть процессорного времени расходуется на выполнение приложений, а не на исполнение кода управления памятью
Таким образом, можно подвести общий итог — влияние виртуальной памяти на производительность минимально, если она используется как можно меньше. Это значит, для хорошей производительности подсистемы виртуальной памяти обязательным требованием является достаточный объём ОЗУ.
Также влияют на производительность (хотя в гораздо меньшей степени) скорость диска и мощность процессора. Однако, не следует забывать, что эти ресурсы помогают лишь смягчить падение производительности от постоянных ошибок страницы и активной подкачки, они практически не влияют на производительность подсистемы виртуальной памяти (хотя, очевидно, они играют большую роль с точки зрения общей производительности).
Замечания
[1] | В разумно загруженной системе всегда будет какое-то количество ошибок страницы, возникающих при загрузке в памяти новых приложений. |