Victor Isaev (torrio) wrote,
Victor Isaev
torrio

64 -> 32 -> 14

Помните, может быть, я рассказывал про волшебный сервер, с которым мне случайно довелось столкнуться, и чьи вычислительные мощности я пробовал использовать для своих расчетов?
Сегодня я снова на него зашел, чтобы еще кое-чего пересчитать.
Расчеты предполагали работу с достаточно большой БД (40Гб примерно), поэтому я предполагал, что SQL Server 2008 R2, там установленный, эту БД максимально закэширует. Я даже открыл Task Manager, чтобы посмотреть, с какой скоростью он будет загружать данные и поглощать память.
Каково же было моё удивление, когда я увидел, что процесс sqlservr.exe кушает всего 170Мб, и не хочет увеличивать потребление ни на метр. Я проверил, не почудилось ли мне, не Compact-ли это Edition, не приведи господь. Нет. Написал мега-запрос, который читает почти 10% данных из базы, запустил. SQL увеличил потребление до уровня 250Мб и там остался. Если что, у меня на ноуте в idle он больше потребляет.
Стал смотреть дальше, и заметил странное. Сколько бы приложений я не запускал, как бы не загружал сервер, общий уровень загрузки памяти не поднимался выше 14,2Гб (из доступных 32Гб).

Если честно, я такого никогда раньше не видел. Похоже на какое-то квотирование, как будто сервак заточен под Terminal Services и много юзеров, но таких настроек я на нём не нашёл. Есть какие-нибудь идеи, что это вообще может быть?

UPD:

MSSQL doesn't properly report its memory allocation in Task Manager with the default configuration. Evidently Microsoft uses some low level allocation techniques that perform well but do not show up in Task Manager. If you configure it to have a max of 8GB, it will eventually use that 8GB even though you don't see it directly in Task Manager.

You can see it indirectly in Task Manager because the page file usage will go up by the amount of memory you configure for MSSQL. It's kind of like trying to see a black hole. You can't actually see them, but you can figure out they there by the gravitational tug they put on the objects near them. Ok, maybe not.

If you're interested in viewing the actual memory usage of MSSQL, you can get very detailed info by executing DBCC MEMORYSTATUS from SQL Server Management Studio. If you don't care to have that level you detail, you can run perfmon and add the SQLServer:Memory Manager/Total Server Memory(KB) performance counter.

So for your process, rest assured that if you configured MSSQL to have 8GB max and there is 32GB of physical memory available, it will use all 8GB if it has to load that much data from the disk.
Tags: США, лытдыбр, работа, техника, технологии
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments