powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Потоки данных при работе SQL-сервера
21 сообщений из 21, страница 1 из 1
Потоки данных при работе SQL-сервера
    #39590985
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще раз здравствуйте, знатоки!
В продолжение своего тернистого пути к матерому SQL-щику, еще 1 вопрос:
*предыстория*
Один из наших специалистов померял производительность дисковой подсистемы утилитой diskspd, и обнаружил, что при количестве потоков (threads), равным от 16 и выше - производительность снижается (что логично) до неприемлимого уровня (время отклика от 80 мс и выше).
Теперь он заявляет, что в связи с тем, что в нашей БД может работать от 20 до 30 человек одновременно + строются индексы + проходят бекапы логов, и т.д. - количество потоков в нашем случае может достигать 40-50 и более.
*предыстория закончена*

Собственно, вопрос: насколько я понимаю, пользователей БД нельзя считать как отдельные "потоки данных", которые указаны в утилите тестирования? Ведь поток то один (и вообще есть ли поток).
Гугл сходу мне на этот вопрос не ответил, может подкинете мат.часть.
Спасибо!
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39590994
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Время отклика не характеризует производительность, оно характеризует нагруженность. Производительность характеризуется показателями чтени/записи в период времени.
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591008
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,
Ок, нужно будет помониторить этот параметр.
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591052
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходите из того, на что вы можете повлиять.

На дисковую систему можете как-то влиять ?
На объем памяти ?
На SQL-код/бизнес-логику ?
На кол-во юзеров ?
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591170
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LSVИсходите из того, на что вы можете повлиять.

На дисковую систему можете как-то влиять ?
На объем памяти ?
На SQL-код/бизнес-логику ?
На кол-во юзеров ?

Мне бы понять, в чем затык, для начала.
И сколько потоков оптимально выставить для теста, чтобы понять - беда со сторейджом или нет.

Сейчас ставлю тест 8КБ блоками в 32 потока (длина очереди - 16) без учета кешей системы на запись вот такие результаты:

thread | bytes | I/Os | MB/s | I/O per s | AvgLat | LatStdDev |
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
total: 786448384 | 96002 | 25.00 | 3199.98 | 168.717 | 321.889

Судя по мануалам к diskspd - отклик в 168 милисекунд это оч много.
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591227
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErrorВ продолжение своего тернистого пути к матерому SQL-щику, еще 1 вопрос:
*предыстория*
Один из наших специалистов померял производительность дисковой подсистемы утилитой diskspd, и обнаружил, что при количестве потоков (threads), равным от 16 и выше - производительность снижается (что логично) до неприемлимого уровня (время отклика от 80 мс и выше).
Теперь он заявляет, что в связи с тем, что в нашей БД может работать от 20 до 30 человек одновременно + строются индексы + проходят бекапы логов, и т.д. - количество потоков в нашем случае может достигать 40-50 и более.
*предыстория закончена* Количество пользователей, операции, и потоки IO никак не связаны.

AngryErrorМне бы понять, в чем затык, для начала.Далее, непонятно, какой затык вы имели в виду? Жалобу пользователя?

AngryErrorИ сколько потоков оптимально выставить для теста, чтобы понять - беда со сторейджом или нет.

Сейчас ставлю тест 8КБ блоками в 32 потока (длина очереди - 16) без учета кешей системы на запись вот такие результаты:

thread | bytes | I/Os | MB/s | I/O per s | AvgLat | LatStdDev |
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
total: 786448384 | 96002 | 25.00 | 3199.98 | 168.717 | 321.889

Судя по мануалам к diskspd - отклик в 168 милисекунд это оч много.Чтобы понять - беда со сторейджом или нет, в тесте diskspd (или лучше использовать sqlio) нужно ставить правильные параметры. Сиквел разве так с дисками работает? "8КБ блоками в 32 потока (длина очереди - 16) без учета кешей системы на запись"
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591264
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

Если я ничего не перепутал:

Механизм упреждающего чтения позволяет компоненту Database Engine считывать из одного файла до 64 последовательных страниц (512 КБ)

При работе с журналом транзакций поддерживается до 32-х запросов ввода-вывода для 64-разрядной редакции сервера, с предельным размером запроса 3840KB

Т.е. мне нужно тестировать на запись блоки в 32-потока по 3840КБ и чтение по 512 КБ ?
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591288
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErroralexeyvg,

Если я ничего не перепутал:

Механизм упреждающего чтения позволяет компоненту Database Engine считывать из одного файла до 64 последовательных страниц (512 КБ)

При работе с журналом транзакций поддерживается до 32-х запросов ввода-вывода для 64-разрядной редакции сервера, с предельным размером запроса 3840KB

Т.е. мне нужно тестировать на запись блоки в 32-потока по 3840КБ и чтение по 512 КБ ?
Автор: Александр Гладченко. SQL Server: Методика тестирования дисковой подсистемы
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591557
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

К сожалению, в статье не совсем понял, в чем разница между потоками, которые указываются в параметре -t и реальными потоками в SQL-сервере.
Единственная зацепка - автор говорит, что нет смысла ставить больше потоков, чем установлено процессорных ядер.
Получается, SQL генерирует потоки, ориентируясь на кол-во ядер?
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591564
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErroralexeyvg,

К сожалению, в статье не совсем понял, в чем разница между потоками, которые указываются в параметре -t и реальными потоками в SQL-сервере.
Единственная зацепка - автор говорит, что нет смысла ставить больше потоков, чем установлено процессорных ядер.
Получается, SQL генерирует потоки, ориентируясь на кол-во ядер?Дались вам эти потоки. Какая вот разница, объясните мне, во сколько потоков данные будут попадать в очередь, если (условно говоря) контроллер будет эту очередь обрабатывать последовательно?

Основная претензия к многопоточному вводу-выводу была всегда в том, что он может превратить последовательный доступ к случайному. Но у вас же уже изначально случайный доступ. При чем тут потоки?
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591669
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErroralexeyvg,

К сожалению, в статье не совсем понял, в чем разница между потоками, которые указываются в параметре -t и реальными потоками в SQL-сервере.
Единственная зацепка - автор говорит, что нет смысла ставить больше потоков, чем установлено процессорных ядер.
Получается, SQL генерирует потоки, ориентируясь на кол-во ядер?Разумеется, если вы выполняете 10 запросов параллельно, то он не делает 10 потоков IO :-)

Сиквел отводит часть ядер под вычисления, часть под ввод-вывод, в том числе одновременно.
Система задания потоков IO там сложная, но разумеется, если вы выполняете 10 запросов параллельно, то он не делает 10 потоков запросов к диску :-)
Автор на основании своего опыта дал такую рекомендацию, я в общем с ней согласен...

Там ещё есть про типичный размер блока данных, и это 64 кб, а не 8, как у вас. Странное число, почему 8? Бывает 512 байт последовательно, для логов, 64 кб (рандом или последовательно) для страниц данных, 512 кб для бакапов и упреждающих чтений, но никак не 8.
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591678
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

Видимо, я слишком большое значение им придал.
Сейчас протестировал дисковую подсистему: (16 потоков, очередь запросов - 8, 50% чтения 50% записи, рандом, блоки по 8КБ) получается в среднем 30 мб/сек. Такое норма для RAID10-массива из 14 FC дисков?

Обратил внимание, что в логах SQL-сервера пишутся записи от spid24s:
FlushCache: cleaned up 360072 bufs with 30026 writes in 99490 ms (avoided 93392 new dirty bufs) for db 5:0
average writes per second: 301.80 writes/sec
average throughput: 28.27 MB/sec, I/O saturation: 23377, context switches 35146

стоит ли обращать внимание на эти уведомления?
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591686
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

Как раз в той статье, что вы привели.
В таблице с характеристиками для основных типов нагрузки ввода – вывода SQL Server, Файлы данных OLTP системы: 8КБ
Его и тестировал :)

Сильно запутался с этими IO-потоками. Как threads, указанные в diskspd (или sqlio) применяются в реальной жизни?
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591694
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErrorКак threads, указанные в diskspd (или sqlio) применяются в реальной жизни?
Никак.
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591697
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Т.е. правильно будет тестировать дисковую систему, указывая 1 поток?
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591715
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Был бы очень признателен, если бы кто-нибудь сформировал примерную строку параметров для теста диска с данными и диска с логами.
А то я что-то заплутал)
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591745
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErrorСейчас протестировал дисковую подсистему: (16 потоков, очередь запросов - 8, 50% чтения 50% записи, рандом, блоки по 8КБ) получается в среднем 30 мб/сек. Такое норма для RAID10-массива из 14 FC дисков?Да.

AngryErrorКак раз в той статье, что вы привели.
В таблице с характеристиками для основных типов нагрузки ввода – вывода SQL Server, Файлы данных OLTP системы: 8КБ
Его и тестировал :)В статьеВторой метрикой является производительность передачи данных, так называемый Traffic Throughput. Это основная метрика настоящей методики, поскольку большинству приложений баз данных характерны укрупнённые запросы (например, упреждающее чтение способно использовать запросы ввода-вывода в 64 и 128 КБ).
А 8 кб случайного доступа там конечно упоминается для OLTP, но это очень вырожденный случай. Типа террабйтная база, и выборка/апдэйт случайных коротких записей.

Типично будет последовательный доступ небольшими блоками для лога, + случайный либо последовательный доступ большими блоками для файлов данных.
Вот эти 2 нагрузки и тестируйте, отдельно на разные диски (ведь для этих файлов и будут разные диски, как рекомендовано?)

И ещё, обратите внимание на "Таблица 2. Характеристики для основных типов нагрузки ввода – вывода SQL Server", там всё это немного подробнее.

AngryErrorБыл бы очень признателен, если бы кто-нибудь сформировал примерную строку параметров для теста диска с данными и диска с логами.Ээээ, в конце статьи zip-архив с командным файлом :-)
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591777
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

К сожалению, этот файл (пример) уже удален с сервера.
А остальные параметры важны? Кол-во потоков, длина очереди, игнор буфера, размер тестируемого файла.
Файлы на разных дисках.
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591791
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErrorА остальные параметры важны? Кол-во потоков, длина очереди, игнор буфера, размер тестируемого файла.Количество потоков для файла данных сделайте равным числу ядер, для лога - 1
размер файла - побольше, чтоб кэш не использовался
длинна очереди - лучше мерить с разными очередями, что бы увидеть пик пропускной способности и зависимость от глубины очереди.
Александр игнорирует буфер, что бы замерить именно чистую дисковую подсистему. Но этот подход многие считают неправильным.

В общем, что я хочу сказать - читайте всю статью, анализируйте, осмысливайте работу сиквела и параметры теста применительно к вашему софту и к бизнес-задачам - потому что нельзя заранее сказать, какие нужно задать, иначе бы это всё было встроено в сиквел и в какой то стандартный тест, или хотя бы в описании параметров SQLIO были бы указаны правильные параметры, которые нужно задавать всегда.
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591792
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мысли вслух:

-h -L -d?(30-60 сек)

OLTP -b8K -r -w25
WH -b2M -w0 (If –r is used random tests are done, otherwise sequential tests are done)
LOG ?
tempdb ?

-t? (количество ядер CPU (всех или в нума ноде?) )

-o? (<= 2 * количество шпинделей )

1
2
...
Рейтинг: 0 / 0
Потоки данных при работе SQL-сервера
    #39591805
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

Спасибо огромное за помощь! Думаю, дальше сам разберусь.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Потоки данных при работе SQL-сервера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]