Кто-то может причислить меня к тем людям, которые в принципе не любят работать в виртуальной среде – будь то Virtual PC, VMware, Virtual Server или что-либо иное. На самом деле я просто нахожу мало удовольствия в постоянных попытках ускорить работу виртуальных машин. Проблема повышения производительности для меня весьма актуальна, поскольку сама идея VM мне нравится. Среда виртуальной машины позволяет опробовать множество функциональных возможностей SQL Server, от использования которых в противном случае пришлось бы отказаться из-за дефицита аппаратных ресурсов. В частности, я использую VM для построения кластеров SQL Server. Более подробную информацию о реализации кластеризации с использованием VM можно найти в статье Майкла Оти "Virtual Server 2005 Cluster Setup Kit" (http://www.osp.ru/win2000/2005/05/012.htm). Я считаю себя достаточно опытным техническим специалистом и мне уже случалось применять некоторые рекомендации по повышению производительности виртуальных машин, однако пока так и не удалось добиться необходимой скорости работы.
Учитывая постоянный конфликт с VM, я был особенно рад познакомиться с региональным директором Windows Client and Virtual PC в израильском подразделении компании Microsoft. Амит Марлов главным образом специализируется на настройке образов Microsoft Virtual PC. Его работа сразу заинтересовала меня, и я принялся изучать рекомендации этого автора, помещенные в Internet (http://lists.sqlmag.com/t?ctl=1CB16:7F5AD). Мой энтузиазм несколько остыл, когда обнаружилось, что все рекомендации написаны на иврите. Однако я неустанно убеждал Амита в необходимости перевода самых ценных советов, которым я уже начал следовать. Рекомендации составлены для Windows Virtual PC и Virtual Server, однако могут с успехом применяться и к VMware. Ниже я привожу пять советов, которыми читатели могут попробовать воспользоваться.
Рекомендация 1: Не создавайте дефицита оперативной памяти для базовой операционной системы.
Может показаться, что отведение большого объема оперативной памяти под VM улучшит положение, однако производительность не увеличится, если дополнительная память будет «украдена» у базовой системы. Под виртуальную машину следует отводить менее половины имеющейся физической памяти.
Рекомендация 2: Исключите виртуальную машину из сферы антивирусного контроля.
Сделайте так, чтобы сфера деятельности антивирусных программ и программ противодействия атакам разведывательного характера не распространялась на программные процессы виртуальной машины (например, Virtual PC.exe) и файлы (например, виртуальные жесткие диски, файлы настройки).
Рекомендация 3: Выключите страничную организацию исполнительных модулей.
Отключите программу Windows Paging Executive на базовой рабочей станции и на VM, чтобы исполнительные модули Windows никогда не разбивались на страницы. Выключить Paging Executive можно только путем редактирования реестра, что приходится делать на свой страх и риск и только после создания резервной копии реестра с использованием утилиты резервного копирования Windows (путем выбора System State). Необходимо поменять значение параметра HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Control\SessionManager\ MemoryManagement\DisablePagingExecutive с 0 на 1.
Рекомендация 4: Выполните дефрагментацию в максимальном объеме.
Выполните дефрагментацию базовой системы, а также дефрагментацию и уплотнение виртуальных машин. Дефрагментация всегда предполагает минимизацию дисковых операций ввода-вывода, а уплотнение виртуальной машины дает повышение производительности. Более компактная машина потребляет меньше оперативной памяти, оставляя больше места под кэш базовой системы.
Рекомендация 5: Отделите виртуальную машину.
Эта рекомендация исходит не от Амита, который, однако, с ней бы согласился: по возможности следует размещать виртуальную машину на отдельном физическом жестком диске. Это позволяет уменьшить вероятность конфликта между базовой системой и виртуальной машиной, возникающего на почве использования одного и того же диска.
А пока я продолжаю пребывать в процессе уравновешивания всех деталей с целью оптимизации работы всех своих виртуальных машин (особенно это касается настроек, связанных с распределением оперативной памяти). Однако с тех пор, как я стал следовать приведенным выше советам, производительность заметно повысилась. Воспользуйтесь данными рекомендациями, и, возможно, это станет очередным тонизирующим «вливанием» для ваших виртуальных машин.
Дуглас Макдауэлл, douglas@SolidQualityLearning.com