Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MS SQL 2012. Работа с памятью.  [new]
человек_ниоткуда
Guest
Курю книжонку "Professional SQL Server 2012 Internals and Troubleshooting", и не могу понять один абзац.
Professional SQL Server 2012 Internals and Troubleshooting
Whenever a worker thread issues a read request, it gets a list of 64 pages in cache and checks whether the free buffer list is below a certain threshold. If it is, it will try to age-out some pages in its list, which causes any dirty pages to be written to disk.

Вот кусок книги открытый на этом месте: http://books.google.ru/books?id=4GTjK8xmsxcC&pg=PA19&lpg=PA19&source=bl&ots=O4fO13264l&sig=JQNZ0M0pMWKutjOmHS2-NXvzMR4&hl=ru&sa=X&ei=HZJgVIrcOIKzPNmvgegL&ved=0CDQQ6AEwAw#v=onepage&q&f=false это раздел "Dirty Pages", если что.

Мне не понятно что за 64 страницы получает worker. Это страницы с которых worker собирается считать информацию? Или это IAM страницы? Почему 64?
10 ноя 14, 13:43    [16822192]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2012. Работа с памятью.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
человек_ниоткуда
Это страницы с которых worker собирается считать информацию?
Судя по написанному, это страницы, которые надо проверить, не пора ли их сбрасывать на диск. Типа, каждый воркер -- сам себе мини-lazy-writer.
человек_ниоткуда
Почему 64?
Почему нет? Воркеру надо еще какую-то работу делать, кроме как чекать страницы.

Сообщение было отредактировано: 10 ноя 14, 13:50
10 ноя 14, 13:49    [16822236]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2012. Работа с памятью.  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
человек_ниоткуда
Курю книжонку "Professional SQL Server 2012 Internals and Troubleshooting", и не могу понять один абзац.
Professional SQL Server 2012 Internals and Troubleshooting
Whenever a worker thread issues a read request, it gets a list of 64 pages in cache and checks whether the free buffer list is below a certain threshold. If it is, it will try to age-out some pages in its list, which causes any dirty pages to be written to disk.

Вот кусок книги открытый на этом месте: http://books.google.ru/books?id=4GTjK8xmsxcC&pg=PA19&lpg=PA19&source=bl&ots=O4fO13264l&sig=JQNZ0M0pMWKutjOmHS2-NXvzMR4&hl=ru&sa=X&ei=HZJgVIrcOIKzPNmvgegL&ved=0CDQQ6AEwAw#v=onepage&q&f=false это раздел "Dirty Pages", если что.

Мне не понятно что за 64 страницы получает worker. Это страницы с которых worker собирается считать информацию? Или это IAM страницы? Почему 64?



rjulf all_statistics_is_always_updated

Когда рабочий виток (процесс, тред) иниициирует запрос на чтение, он получает список из 64 страниц в кеше и проверяет, находится ли размер свободного буфера (буфера свободного пространства) ниже определенного порога. Если да, то он пытается объявить некоторые из страниц в списке устаревшими, а это приводит к тому, что грязные страницы записываются (сбрасываются) на диск.
10 ноя 14, 13:52    [16822254]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2012. Работа с памятью.  [new]
человек_ниоткуда
Guest
Гавриленко Сергей Алексеевич, вы хотите сказать, что это случайные 64 страницы? - Логично, спасибо.
10 ноя 14, 13:55    [16822292]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2012. Работа с памятью.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
человек_ниоткуда
Гавриленко Сергей Алексеевич, вы хотите сказать, что это случайные 64 страницы? - Логично, спасибо.
Возможно, они не совсем случайные (т.е. существует какой-то осмысленный алгоритм выбора этих страниц сервером), но для воркера они будут случайные, и ему надо просто будет потратить свое процессорное время на проверку, чтобы тупо не ожидать асинхронного ввода-вывода, пока он вырабатает свою квоту.

В целом, поведение логичное. Хочешь читать данные и занять ими память? Будь бобр, сначала приложи чутка усилий для ее очистки, бо lazy writer при memory pressure может и не справляться вовремя.
10 ноя 14, 14:03    [16822346]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2012. Работа с памятью.  [new]
человек_ниоткуда
Guest
a_voronin, спасибо за перевод. Почемуто вспомнилось...
+
Картинка с другого сайта.


Но я имел ввиду не язык, а смысл. Я согласен с предположением Гавриленко Сергей Алексеевич о том, что каждый Worker перед тем как запросить данные с диска, а это приведёт к загрузке их в кэш, пытается почистить маленький кусочек кэша по алгоритму Lazy Writer.
"Worker thread" - думаю в данном контексте "Поток Worker'а"

Сообщение было отредактировано: 10 ноя 14, 15:02
10 ноя 14, 14:03    [16822347]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2012. Работа с памятью.  [new]
человек_ниоткуда
Guest
Гавриленко Сергей Алексеевич, поверите или нет, но я так и подумал. Такчто согласен опять.
10 ноя 14, 14:07    [16822370]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2012. Работа с памятью.  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
человек_ниоткуда
a_voronin, спасибо за перевод. Почемуто вспомнилось...
+
Картинка с другого сайта.


Но я имел ввиду не язык, а смысл. Я согласен с предположением Гавриленко Сергей Алексеевич о том, что каждый Worker перед тем как запросить данные с диска, а это приведёт к загрузке их в кэш, пытается почистить маленький кусочек кэша по алгоритму Lazy Writer.
"Worker thread" - думаю в данном контексте "Поток Worker'а"


Короче, он получает буфер (кусок кеша) и смотрит сколько в нём свободных страниц, если их там много, то, чтобы освободить место, лишние скидывает на диск.

Сообщение было отредактировано: 10 ноя 14, 15:02
10 ноя 14, 14:42    [16822582]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2012. Работа с памятью.  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10803
Блог
Я бы предположил, что воркер, распределяя очередной экстант, сохраняет в листе лезирайтера все встреченные им в экстенте грязные страницы. Грязные страницы сбрасываются на диск только лезирайтером (которых по одному на узел) и чекпоинтом.

Сообщение было отредактировано: 10 ноя 14, 17:53
10 ноя 14, 17:52    [16824213]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить