Свойства сервера (страница «Процессоры») Server Properties — Processors Page
Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions)
Используйте эту страницу, чтобы просмотреть или изменить параметры процессоров. Use this page to view or modify your processor options. Настройки соответствия процессоров доступны только в случае, если в системе установлено более одного процессора. Processor affinity settings are only enabled when more than one processor is installed.
Параметры Options
Соответствие процессоров Processor Affinity
Связывает процессоры с определенными потоками, чтобы устранить чрезмерную нагрузку на процессоры и уменьшить количество переходов потоков между процессорами. Assigns processors to specific threads to eliminating processor reloads and reduce thread migration across processors. Дополнительные сведения см. в разделе Параметр конфигурации сервера «affinity mask». For more information, see affinity mask Server Configuration Option.
Привязка ввода-вывода I/O Affinity
Связывает операции дискового ввода-вывода Microsoft Microsoft SQL Server SQL Server с определенным подмножеством ЦП. Binds Microsoft Microsoft SQL Server SQL Server disk I/Os to a specified subset of CPUs. Дополнительные сведения см. в разделе Параметр конфигурации сервера «affinity Input-Output mask». For more information, see affinity Input-Output mask Server Configuration Option.
Автоматически устанавливать маску соответствия для всех процессоров Automatically set processor affinity mask for all processors
Позволяет SQL Server SQL Server устанавливать соответствие процессоров. Allows SQL Server SQL Server to set the processor affinity.
Автоматически устанавливать маску схожести ввода-вывода для всех процессоров Automatically set I/O affinity mask for all processors
Позволяет SQL Server SQL Server устанавливать привязку ввода-вывода. Allows SQL Server SQL Server to set the I/O affinity.
Максимальное число потоков исполнителя. Maximum worker threads
Значение 0 позволяет SQL Server SQL Server устанавливать количество потоков исполнителя динамически. 0 allows SQL Server SQL Server to dynamically set the number of worker threads. Эта настройка является наиболее подходящей для большинства систем. This setting is best for most systems. Однако в зависимости от конфигурации системы, присвоение этому параметру определенного значения иногда улучшает производительность. However, depending on your system configuration, setting this option to a specific value sometimes improves performance. Дополнительные сведения см. в статье Настройка параметра конфигурации сервера max worker threads. For more information, see Configure the max worker threads Server Configuration Option.
Повысить приоритет SQL Server Boost SQL Server priority
Указывает, следует ли SQL Server SQL Server выставить более высокий приоритет планирования Microsoft Microsoft Windows по сравнению с другими процессами на том же компьютере. Specifies whether SQL Server SQL Server should run at a higher Microsoft Microsoft Windows scheduling priority than other processes on the same computer. Дополнительные сведения см. в статье Настройка параметра конфигурации сервера priority boost. For more information, see Configure the priority boost Server Configuration Option.
Использовать волокна Windows (использование упрощенных пулов) Use Windows fibers (lightweight pooling)
Использовать легковесные потоки (волокна) Windows вместо обычных потоков для службы SQL Server SQL Server . Use Windows fibers instead of threads for the SQL Server SQL Server service. Обратите внимание на то, что такая возможность доступна только в Windows 2003 Server Edition. Note that this is only available in Windows 2003 Server Edition. Дополнительные сведения см. в разделе Параметр конфигурации сервера «использование упрощенных пулов». For more information, see lightweight pooling Server Configuration Option.
Настроенные значения Configured Values
Отображает настроенные значения для параметров на этой панели. Displays the configured values for the options on this pane. В случае изменения этих значений выберите пункт Текущие значения и посмотрите, вступили ли в силу внесенные изменения. If you change these values, click Running Values to see whether the changes have taken effect. В противном случае первым должен быть перезапущен экземпляр SQL Server SQL Server . If they have not, the instance of SQL Server SQL Server must be restarted first.
Текущие значения Running Values
Просмотр текущих значений для параметров на этой панели. View the currently running values for the options on this pane. Эти значения доступны только для чтения. These values are read-only.
Волокна и потоки планировщика пользовательского режима
Поскольку при переключении выполнения с одного потока на другой задействуется планировщик ядра, такая операция может обойтись весьма дорого, особенно если два потока часто переключаются между собой. В Windows реализованы два механизма сокращения «накладных расходов»: волокна и использование планировщика пользовательского режима — «user-mode scheduling (UMS)».
Волокна позволяют приложению осуществлять планирование работы своих собственных «потоков», не полагаясь на встроенный в Windows механизм планирования на основе приоритетов. Волокна часто называют «облегченными» потоками, и, с точки зрения планирования работы, ядру они не видны, поскольку реализуются в пользовательском режиме с помощью библиотеки Kernel32.dll.
Чтобы воспользоваться волокнами, сначала нужно вызвать Windows-функцию преобразования потока в волокно — «ConvertThreadToFiber». Эта функция преобразует поток в запущенное волокно. Впоследствии только что созданное волокно может с помощью функции «CreateFiber» создавать дополнительные волокна. (У каждого волокна может быть свой собственный набор волокон.)
Но в отличие от потока волокно не приступает к выполнению своего кода, пока оно не будет выбрано с помощью функции «SwitchToFiber». Новое волокно выполняется до тех пор, пока оно существует, или до тех пор, пока в нем не будет вызвана функция SwitchToFiber, которая выберет для выполнения другое волокно. Дополнительные сведения можно найти в документации Windows SDK по функциям волокон.
UMS-потоки, доступные только на 64-разрядных версиях Windows, имеют те же основные преимущества, что и волокна, но избавлены от многих недостатков, присущих волокнам. UMS-потоки имеют свое собственное состояние потоков ядра, и поэтому они видимы ядру, которое позволяет нескольким UMS-потокам выдавать блокирующие системные вызовы, совместно использовать и вести борьбу за ресурсы и иметь состояние для каждого потока. Но когда двум и более UMS-потокам требуется работать только в пользовательском режиме, они могут периодически переключать контексты выполнения (за счет уступок одного потока другому) без участия планировщика: переключение контекста происходит в пользовательском режиме. С точки зрения ядра ничего не меняется и продолжается выполнение все того же потока. Когда UMS-поток выполняет операцию, требующую входа в ядро (например, системный вызов), он переключается на выделенный ему поток режима ядра (это называется непосредственным переключением контекста — «directedcontextswitch»).
Хотя у потоков имеется свой собственный контекст выполнения, каждый поток внутри какого-нибудь процесса использует общее виртуальное адресное пространство этого процесса (вдобавок ко всем остальным ресурсам, принадлежащим процессу). Таким образом, все потоки в процессе имеют полноправный доступ к виртуальному адресному пространству процесса. Но потоки не могут случайно сослаться на адресное пространство другого процесса, пока этот другой процесс не сделает часть своего закрытого адресного пространства общим разделом памяти1, или пока у одного процесса не будет прав на открытие другого процесса для использования таких функций памяти, касающихся обоих процессов, как «ReadProcessMemory» и «WriteProcessMemory».
Как показано на рисунке, кроме закрытого адресного пространства и одного или нескольких потоков, у каждого процесса есть контекст безопасности и список открытых дескрипторов таких объектов ядра, как файлы, общие разделы памяти или один из объектов синхронизации из разряда мьютексов, событий или семафоров.
Контекст безопасности каждого процесса хранится в объекте, который называется маркером доступа (access token). Маркер доступа процесса содержит идентификацию безопасности и полномочия процесса. По умолчанию потоки не имеют своего собственного маркера доступа, но они могут получить такой маркер, позволяющий отдельным потокам имитировать контекст безопасности другого процесса, включая процессы на удаленной системе Windows, не оказывая при этом никакого влияния на другие потоки процесса.
Дескрипторы виртуального адресного пространства — «virtual address descriptors (VAD)» являются структурами данных, используемых диспетчером памяти для отслеживания виртуальных адресов, используемых процессом.
Windows предоставляет расширение модели процесса, называемое заданием (job). Основная функция объектов заданий заключается в том, чтобы управлять группами процессов как единым целым и осуществлять на них одновременное воздействие. Объект задания позволяет управлять конкретными атрибутами и предоставляет ограничения для процесса или процессов, связанных с заданием.
Он также записывает основную учетную информацию для всех процессов, связанных с заданием, а также для всех процессов, которые были связаны с заданием ранее, но на данный момент уже завершены. Некоторым образом, объект задания компенсирует в Windows отсутствие структурированного дерева процесса, но во многих отношениях он является более мощным средством, чем дерево процесса в UNIX-стиле.
Отключение использования упрощенных пулов Disable Lightweight Pooling
Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions)
Это правило проверяет отключение использования упрощенных пулов на сервере. This rule checks that lightweight pooling is disabled on the server. Значение параметра lightweightpooling, равное 1, приводит к переключению SQL Server SQL Server в режим волокон для планирования. Setting lightweightpooling to 1 causes SQL Server SQL Server to switch to fiber mode scheduling. Режим волокон предназначен для ситуаций, когда важным узким местом, ограничивающим производительность, является переключение контекста рабочих потоков UMS. Fiber mode is intended for certain situations in which the context switching of the UMS workers is the important bottleneck in performance. Поскольку такая ситуация является нестандартной, использование режима волокон редко увеличивает производительность или масштабируемость типичной системы. Because this is rare, fiber mode seldom improves performance or scalability on the typical system.
Рекомендации Best Practices Recommendations
Параметр использования упрощенных пулов следует включать только после тщательного тестирования и после оценки всех других возможностей настройки, притом что переключение контекста представляет собой проблему в определенной среде. The lightweightpooling option should only be enabled after thorough testing, after all other performance tuning opportunities are evaluated, and when context switching is a known issue in your environment.
Использовать планирование в режиме волокон для выполнения обычных операций не рекомендуется, поскольку это может привести к снижению производительности, мешая нормальной работе переключения контекста. Кроме того, некоторые компоненты SQL Server SQL Server , которые используют локальное хранилище потоков (TLS) или объекты, принадлежащие потокам, такие как мьютексы (тип объекта ядра Win32), не выполняются правильно в режиме волокон. We recommend that you do not use fiber mode scheduling for routine operation because it can decrease performance by preventing the regular benefits of context switching, and because some components of SQL Server SQL Server that use Thread Local Storage (TLS) or thread-owned objects, such as mutexes (a kind of Win32 kernel object), cannot function correctly in fiber mode
Чтобы отключить использование упрощенных пулов, выполните следующую инструкцию и перезапустите компонент Компонент SQL Server Database Engine SQL Server Database Engine . To remove lightweight pooling, execute the following statement, and then restart the Компонент SQL Server Database Engine SQL Server Database Engine .