…если вы всё ещё не сделали это.
Задумывались ли вы, хватает ли вашему компьютеру, локальному или удалённому серверу оперативной памяти? Задумывались, но не знаете, как это определить? А накопители какого типа вы предпочитаете? Надеемся, данная статья поможет вам в этом разобраться.
Когда компьютеру нужно обработать данные, они помещаются в оперативную память и уже там с ними работает центральный процессор. Все запущенные программы и открытые в них файлы находятся в оперативной памяти компьютера. Таким образом, объём оперативной памяти влияет на то, сколько одновременно программ и насколько «тяжёлых» программ вы можете запустить и сколько одновременно и каких файлов (или, например, вкладок в браузере) вы можете открыть.
Операционная система периодически выгружает на диск из памяти те данные, к которые давно не использовались. А когда происходит к ним обращение снова, операционная система помещает их обратно в память вместо выгруженных на диск неактивных данных. Для пользователя это выглядит следующим образом: вы переключаетесь на окно, к которому давно не обращались, и компьютер на некоторое время «подвисает». А в это время выгруженные из памяти данные считываются с диска и помещаются обратно в память. Насколько быстро это произойдёт, зависит в первую очередь от быстродействия диска, ведь именно он будет здесь являть узким местом (оперативная память всегда быстрее).
Чем быстрее накопитель, тем короче будет такое «подвисание». А какие накопители быстрые — твердотельные. Мнение о ненадёжности твердотельных накопителей бытует и поныне, и до сих пор можно встретить советы перенести файл подкачки на HDD. Делать так ни в коем случае нельзя. Во-первых, SSD имеют достаточную надёжность, чтобы использоваться в высоконагруженных системах, если это не китайские «ноунеймы». У всех ключевых производителей есть несколько линеек накопителей с разным гарантированным уровнем надёжности и всегда можно подобрать необходимый вариант. Как показывает практика, накопители ещё долгое время могут проработать и после исчерпания заявленного ресурса. Во-вторых, поверхность пластин жёстких дисков тоже подвержена износу (вот неожиданность!) и со временем падает время доступа к секторам, а с ним и скорость обмена данными вплоть до невозможности обратиться к этим данным вовсе. Т.е. люди, перемещая файл подкачки с SSD на HDD, сами себе делают работу на компьютере менее комфортной. Действенным способом снизить нагрузку на диск подкачкой и увеличить его ресурс является увеличение объёма оперативной памяти или изменение подхода к работе за компьютером: можно закрывать вкладки, файлы, и программы, которые вам больше не нужны или не понадобятся в ближайшее время, чтобы освободить память.
Если мы посмотрим на разницу скорости линейных чтения и записи на HDD и SSD, окажется, что SSD с интерфейсом SATA превосходят HDD с таким же интерфейсом в среднем «лишь» в 2-3 раза, в то время как на мелко блочных операциях разница составляет десятки раз и именно в этом кроется ключевое отличие накопителей. Механически SSD устроены по-другому и не так важно, где находятся данные, ведь скорость прохождения сигнала к ячейкам SSD гораздо выше, чем время доступа к секторам HDD. С развитием накопителей роль фрагментации данных хоть и снизилась в вопросах производительности HDD, время доступа к разным секторам в силу технических особенностей накопителей данного типа сильно отличается, в то время как разница во времени доступа к ячейкам SSD ничтожно мала. Ещё и поэтому файл подкачки функционирует заметно быстрее, находясь на SSD. Много лет назад, когда SSD ещё не начали получать доступность на потребительском рынке, сильно ощущалась разница в производительности между дефрагментированным файлом подкачки и недефрагментированным. Помимо самого файла, фрагментированными могут быть и данные внутри файла, а на SSD фрагментация уже не играет такой роли. Кроме того, разница в скорости зависела даже от территориального расположения данных на пластине жёсткого диска, и чем дальше данные были от центра, тем быстрее они считывались. На SSD же неважно, где территориально находятся данные, и фрагментация оказывает не такое сильное влияние на производительность.
Операционная система стремится выгрузить из памяти неактивные данные, чтобы в оперативной памяти всегда оставалось место для новых (или вновь загруженных из файла подкачки) данных. Если оперативной памяти не хватает катастрофически, и данные в оперативной памяти практически «не остывают», то операционной системе приходится «судорожно» искать в памяти данные, которые можно выгрузить на диск, когда требуется разместить данные в оперативной памяти. Поэтому в такой ситуации вы будете ждать дважды: пока данные будут выгружены из памяти, плюс пока требуемые данные будут загружены.
Оценить требуемый объём можно, понаблюдав, сколько памяти требуется вашему компьютеру.
В ОС Windows обратимся к диспетчеру задач, чтобы узнать, сколько сейчас всего используется (Committed) памяти
Это значение показывает, сколько данных находится в памяти, плюс сколько данных выгружено в файл подкачки. Его также можно получить следующим образом:
Значение будет в килобайтах. На вышеприведённом скриншоте мы видим, что используется 12.5 ГБ памяти, а всего памяти, включая файл подкачки — 26.4 ГБ. В системе 16 ГБ физической памяти, объём файла подкачки автоматически выбирается системой. Выходит, что объём файла подкачки составляет 60% от объёма физической памяти. Нужно ли бросаться расширять физическую память? Давайте понаблюдаем, как у нас меняется объём используемой памяти.
Мы написали скрипт, создающий задачу в Task Scheduler, которая каждый 15 минут получает значение Committed Memory и дописывает его в файл C:\Users\Public\Documents\commit.txt.
Выглядит он как-то так:
Вот фрагмент этого файла:
Представим данные из файла в виде графика
Как мы видим, большую часть времени система всё же «умещается» в отведённую память. Но нужно ли её расширить, так как иногда её не хватает? Если в работе это не заметно, то можно оставить всё как есть. Если доставляет дискомфорт, то остаётся ещё два выхода: либо всё-таки увеличить объём ОЗУ (но ведь это стоит денег), либо пересмотреть сценарии использования компьютера: закрывать ненужные более вкладки в браузере, файлы и окна программ. Если же это постоянно работающий сервер, то тут придётся пересматривать алгоритмы его работы, если можно доработать или перенастроить ПО, в противном случае придётся всё же добавлять память.
Про Windows выяснили, а в ОС Linux оценить использование памяти можно с помощью команды
Вывод будет примерно следующим:
Параметр
Чтобы собрать статистику, можно поступить следующим образом.
Создаём файл с содержимым
И сохраняем его, например, в
Добавляем в crontab строчку
Информация коллекционируется в
Мы пособирали информацию ещё на двух машинах и получили следующие данные.
В этих двух случаях объём физической памяти 2 ГБ и 512 МБ соответственно. Как мы видим, в случае 2 мы всё время «не умещаемся» в физическую память и её нужно увеличить на 1-2 ГБ.
Мы не будем рассказывать, как выбрать правильный SSD или нужную память, это тема отдельной статьи. Хостеры виртуальных (VPS/VDS) серверов уже всё выбрали, вам всего лишь нужно изменить объём памяти вашего сервера и обратиться в техподдержку для перемещения вашего сервера на SSD, если вы всё ещё не сделали это.
Задумывались ли вы, хватает ли вашему компьютеру, локальному или удалённому серверу оперативной памяти? Задумывались, но не знаете, как это определить? А накопители какого типа вы предпочитаете? Надеемся, данная статья поможет вам в этом разобраться.
▍ На что влияет объём оперативной памяти
Когда компьютеру нужно обработать данные, они помещаются в оперативную память и уже там с ними работает центральный процессор. Все запущенные программы и открытые в них файлы находятся в оперативной памяти компьютера. Таким образом, объём оперативной памяти влияет на то, сколько одновременно программ и насколько «тяжёлых» программ вы можете запустить и сколько одновременно и каких файлов (или, например, вкладок в браузере) вы можете открыть.
▍ Как производительность диска влияет на быстродействие компьютера
Операционная система периодически выгружает на диск из памяти те данные, к которые давно не использовались. А когда происходит к ним обращение снова, операционная система помещает их обратно в память вместо выгруженных на диск неактивных данных. Для пользователя это выглядит следующим образом: вы переключаетесь на окно, к которому давно не обращались, и компьютер на некоторое время «подвисает». А в это время выгруженные из памяти данные считываются с диска и помещаются обратно в память. Насколько быстро это произойдёт, зависит в первую очередь от быстродействия диска, ведь именно он будет здесь являть узким местом (оперативная память всегда быстрее).
▍ Почему файл подкачки должен находиться на SSD
Чем быстрее накопитель, тем короче будет такое «подвисание». А какие накопители быстрые — твердотельные. Мнение о ненадёжности твердотельных накопителей бытует и поныне, и до сих пор можно встретить советы перенести файл подкачки на HDD. Делать так ни в коем случае нельзя. Во-первых, SSD имеют достаточную надёжность, чтобы использоваться в высоконагруженных системах, если это не китайские «ноунеймы». У всех ключевых производителей есть несколько линеек накопителей с разным гарантированным уровнем надёжности и всегда можно подобрать необходимый вариант. Как показывает практика, накопители ещё долгое время могут проработать и после исчерпания заявленного ресурса. Во-вторых, поверхность пластин жёстких дисков тоже подвержена износу (вот неожиданность!) и со временем падает время доступа к секторам, а с ним и скорость обмена данными вплоть до невозможности обратиться к этим данным вовсе. Т.е. люди, перемещая файл подкачки с SSD на HDD, сами себе делают работу на компьютере менее комфортной. Действенным способом снизить нагрузку на диск подкачкой и увеличить его ресурс является увеличение объёма оперативной памяти или изменение подхода к работе за компьютером: можно закрывать вкладки, файлы, и программы, которые вам больше не нужны или не понадобятся в ближайшее время, чтобы освободить память.
▍ Ключевое отличие SSD от HDD
Если мы посмотрим на разницу скорости линейных чтения и записи на HDD и SSD, окажется, что SSD с интерфейсом SATA превосходят HDD с таким же интерфейсом в среднем «лишь» в 2-3 раза, в то время как на мелко блочных операциях разница составляет десятки раз и именно в этом кроется ключевое отличие накопителей. Механически SSD устроены по-другому и не так важно, где находятся данные, ведь скорость прохождения сигнала к ячейкам SSD гораздо выше, чем время доступа к секторам HDD. С развитием накопителей роль фрагментации данных хоть и снизилась в вопросах производительности HDD, время доступа к разным секторам в силу технических особенностей накопителей данного типа сильно отличается, в то время как разница во времени доступа к ячейкам SSD ничтожно мала. Ещё и поэтому файл подкачки функционирует заметно быстрее, находясь на SSD. Много лет назад, когда SSD ещё не начали получать доступность на потребительском рынке, сильно ощущалась разница в производительности между дефрагментированным файлом подкачки и недефрагментированным. Помимо самого файла, фрагментированными могут быть и данные внутри файла, а на SSD фрагментация уже не играет такой роли. Кроме того, разница в скорости зависела даже от территориального расположения данных на пластине жёсткого диска, и чем дальше данные были от центра, тем быстрее они считывались. На SSD же неважно, где территориально находятся данные, и фрагментация оказывает не такое сильное влияние на производительность.
▍ Почему оперативной памяти должно быть достаточно
Операционная система стремится выгрузить из памяти неактивные данные, чтобы в оперативной памяти всегда оставалось место для новых (или вновь загруженных из файла подкачки) данных. Если оперативной памяти не хватает катастрофически, и данные в оперативной памяти практически «не остывают», то операционной системе приходится «судорожно» искать в памяти данные, которые можно выгрузить на диск, когда требуется разместить данные в оперативной памяти. Поэтому в такой ситуации вы будете ждать дважды: пока данные будут выгружены из памяти, плюс пока требуемые данные будут загружены.
▍ Как понять, хватает ли оперативной памяти
Оценить требуемый объём можно, понаблюдав, сколько памяти требуется вашему компьютеру.
В ОС Windows обратимся к диспетчеру задач, чтобы узнать, сколько сейчас всего используется (Committed) памяти
(Get-WmiObject win32_operatingsystem | select @{L='commit';E={($_.TotalVirtualMemorySize - $_.FreeVirtualMemory)}}).commit
Значение будет в килобайтах. На вышеприведённом скриншоте мы видим, что используется 12.5 ГБ памяти, а всего памяти, включая файл подкачки — 26.4 ГБ. В системе 16 ГБ физической памяти, объём файла подкачки автоматически выбирается системой. Выходит, что объём файла подкачки составляет 60% от объёма физической памяти. Нужно ли бросаться расширять физическую память? Давайте понаблюдаем, как у нас меняется объём используемой памяти.
Мы написали скрипт, создающий задачу в Task Scheduler, которая каждый 15 минут получает значение Committed Memory и дописывает его в файл C:\Users\Public\Documents\commit.txt.
Выглядит он как-то так:
powershell.exe set-executionpolicy unrestricted
Set-Content -Path C:\Users\Public\Documents\get-commit.ps1 -Value "(Get-Date -Format 'yyyy-MM-dd HH:mm' )+`"``t`"+(Get-WmiObject win32_operatingsystem | Select @{L='commit';E={(`$_.totalvirtualmemorysize - `$_.freevirtualmemory)}}).commit | Out-File C:\Users\Public\Documents\commit.txt -Append"
$action = New-ScheduledTaskAction -Execute "`"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`"" -Argument "C:\Users\Public\Documents\get-commit.ps1"
$trigger = New-ScheduledTaskTrigger -Once -At 1am -RepetitionInterval (New-TimeSpan -Minutes 15)
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet
$task = New-ScheduledTask -Action $action -Principal $principal -Trigger $trigger -Settings $settings
Register-ScheduledTask 'collect-commit' -InputObject $task
Вот фрагмент этого файла:
2023-05-03 10:15 6387512
2023-05-03 10:30 7986736
2023-05-03 10:45 8545776
2023-05-03 11:00 8540724
2023-05-03 11:15 8646144
2023-05-03 11:30 8726340
2023-05-03 11:45 8583972
2023-05-03 12:00 8898532
2023-05-03 12:15 8945512
2023-05-03 12:30 9749284
2023-05-03 12:45 9833264
2023-05-03 13:00 10605496
Представим данные из файла в виде графика
Про Windows выяснили, а в ОС Linux оценить использование памяти можно с помощью команды
free -t -h
Вывод будет примерно следующим:
total used free shared buff/cache available
Mem: 461Mi 129Mi 136Mi 0.0Ki 194Mi 319Mi
Swap: 1.0Gi 5.0Mi 1.0Gi
Total: 1.5Gi 135Mi 1.1Gi
Параметр
-t
добавляет строчку Total, на тот случай, если нам лень выполнять сложение (а нам, конечно же, лень). Параметр -h
приводит значения к более удобным KiB, MiB и GiB. По умолчанию значения выводятся в килобайтах без указания величин.Чтобы собрать статистику, можно поступить следующим образом.
Создаём файл с содержимым
#!/bin/bash
a=$(date +'%Y-%m-%d %H:%M')
b=$(free -t | awk -v RS="" '{print $20}')
echo $a$'\t'$b >> /home/used.txt
И сохраняем его, например, в
/home/get-used.sh.
Добавляем в crontab строчку
*/15 * * * * /home/get-used.sh
Информация коллекционируется в
/home/used.txt
, содержимое которого выглядит так же, как у файла commit.txt
, который мы создавали в Windows.Мы пособирали информацию ещё на двух машинах и получили следующие данные.
▍ Вместо заключения
Мы не будем рассказывать, как выбрать правильный SSD или нужную память, это тема отдельной статьи. Хостеры виртуальных (VPS/VDS) серверов уже всё выбрали, вам всего лишь нужно изменить объём памяти вашего сервера и обратиться в техподдержку для перемещения вашего сервера на SSD, если вы всё ещё не сделали это.
Выиграй телескоп и другие призы в космическом квизе от RUVDS. Поехали? ?