Valores de tiempo de SQL Server pueden ser incorrectos al utilizar utilidades o tecnologías que cambiar las frecuencias de CPU

Seleccione idioma Seleccione idioma
Id. de artículo: 931279 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Microsoft SQL Server 2005 utiliza el contador de CPU alta resolución para proporcionar capacidades de temporización microsegundo. Un microsegundo es un millón de segundo (o una milésima de un milisegundo). Sin embargo, los valores de tiempo de SQL Server pueden ser incorrectos si utiliza tecnologías que cambiar las frecuencias de CPU. Por ejemplo, este problema puede producirse al utilizar cualquiera de las siguientes tecnologías:
  • CPU paso a paso
  • AMD Cool'n ' silencioso tecnología
  • Distintas combinaciones de energía
Este artículo contiene métodos e información adicional para ayudarle a evitar este problema.

Síntomas

Cuando utiliza la instrucción SET STATISTICS TIME para mostrar la ejecución de servidor, análisis y tiempos de compilación, puede obtener valores incorrectos. Por ejemplo, puede observar que el tiempo transcurrido del tiempo de ejecución de SQL Server es mucho más que el tiempo de CPU. Este problema puede afectar a la precisión del ajuste del rendimiento. Este problema se produce al utilizar una de las tecnologías que aparecen en la sección "Resumen" en el servidor.

Causa

Esto ocurre porque las frecuencias de CPU cambian al usar estas tecnologías. SQL Server 2005 utiliza el contador de CPU alta resolución para proporcionar capacidades de temporización microsegundo. Si se cambian las frecuencias de CPU para ahorrar energía y reducir la salida de calor, duraciones calculadas es incorrectas.

Solución

Información de Service Pack

Para resolver este problema, obtenga el service pack más reciente para SQL Server 2005. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
913089Cómo obtener el service pack más reciente para SQL Server 2005
Nota En SQL Server 2005 Service Pack 3 y service packs posteriores, no se utiliza la marca de tiempo de procesador. Estas versiones de SQL Server 2005 utilizan un temporizador más confiable que tiene una precisión máxima de 1 milisegundo.

Estado

Este problema se corrigió por primera vez en SQL Server 2005 Service Pack 3.

Solución

SQL Server 2005 requiere puntos de datos conocido y estable para realizar el ajuste del rendimiento precisa. Si se habilitan dinámicos ajustes de frecuencia de CPU en el equipo, puede deshabilitarlos por lo que las CPU mantienen una velocidad de frecuencia estable antes de empezar a supervisar y optimizar el rendimiento de SQL Server. Para ello, utilice los métodos siguientes.

Configurar la combinación de energía en el equipo para forzar las CPU permanece en la frecuencia máxima

Para ello, siga estos pasos:
  1. Haga clic en Inicio , haga clic en Ejecutar , escriba powercfg.cpl y, a continuación, haga clic en Aceptar .
  2. En el cuadro de diálogo Propiedades de opciones de energía , haga clic en Siempre en la lista de combinaciones de energía .
  3. Haga clic en Aceptar .
Puede producirse un desfase. Un desfase es un divergencia entre los valores de frecuencia de CPU. Para obtener más información, consulte la sección "Desplazamiento". En este caso, debe reiniciar Microsoft Windows para volver a sincronizar las frecuencias de todas las CPU después de cambiar la combinación de energía.

Si no puede reiniciar el equipo, habilitar la afinidad de procesador de SQL Server impedir que los subprocesos de SQL Server entre CPU. Al hacerlo, no es necesario reiniciar el equipo incluso si se produce un divergencia entre los valores de frecuencia de CPU. Para habilitar la afinidad de procesador de SQL Server para todas las CPU en el servidor, debe utilizar una máscara diferente, dependiendo del número de procesadores lógicos que están en el servidor.

En la tabla siguiente se enumeran situaciones de ejemplo.
Contraer esta tablaAmpliar esta tabla
Número de CPUInstrucciones para habilitar la afinidad del procesador
02 CPUexec sp_configure 'affinity mask', 0 x 00000003
IR
volver a configurar
IR
04 CPUexec sp_configure 'affinity mask', 0x0000000F
IR
volver a configurar
IR
08 CPUexec sp_configure 'affinity mask', 0x000000FF
IR
volver a configurar
IR
16exec sp_configure 'affinity mask', 0x0000FFFF
IR
volver a configurar
IR
32 CPUexec sp_configure 'affinity mask', 0xFFFFFFFF
IR
volver a configurar
IR
Nota Puede ser insuficiente para deshabilitar características de variación de frecuencia de CPU en el nivel de BIOS. Diversas utilidades de terceros pueden modificar las frecuencias de CPU. Algunas implementaciones de habiliten la frecuencia ajustes incluso cuando las CPU están en la configuración de la combinación de energía máximo. En este caso, debe deshabilitar estas utilidades de otros fabricantes cuando se realiza en SQL Server 2005 de optimización del rendimiento.

Utilice utilidades de terceros y controladores para sincronizar las frecuencias de CPU y los contadores de reloj de CPU

En raras ocasiones, un sistema puede requerir una actualización del fabricante para corregir problemas de frecuencia de CPU. Es una mejor práctica para comprobar el sistema para las actualizaciones de BIOS, microcódigo y firmware más recientes Si sospecha que el sistema puede tener un problema.

Más información

Microsoft SQL Server 2000 y versiones anteriores de SQL Server utilizan los mecanismos de sincronización de Windows. Los mecanismos de sincronización utilizan valores de precisión de milisegundos. Normalmente, esta precisión es ms. de 10 a 15, sin embargo, la precisión puede ser tan grande como ms 55. Las consultas de SQL Server con frecuencia completar dentro de un solo dígito milisegundos o tiempo microsegundo abarca. Esta precisión requiere un temporizador de alta resolución. Por lo tanto, estas versiones de informe de SQL Server la duración de algunas consultas como 0 ms. por tanto, es difícil de supervisar el rendimiento y ajustar el rendimiento de SQL Server en versiones anteriores de SQL Server.

SQL Server 2005 mejora la precisión mediante el contador de CPU alta resolución para proporcionar microsegundo capacidades de tiempo. Al utilizar las tecnologías que se enumeran en la sección "Resumen", los valores de tiempo notificado es incorrectos.

Este problema puede afectar a los objetos y características siguientes:
  • Traza los sucesos:
    • El evento de atención
    • Eventos en el nodo procedimientos almacenados
    • Eventos en el nodo TSQL
    • Eventos en el nodo objetos
    • Eventos en el nodo de transacciones
  • Vistas de administración dinámicas:
    • Sys.dm_exec_query_stats
    • Sys.dm_exec_requests
    • Sys.dm_exec_sessions
    • Sys.dm_io_pending_io_requests
    • Sys.dm_os_ring_buffers
    • Sys.dm_os_sys_info
    • Sys.dm_io_virtual_file_stats
    • Sys.dm_os_wait_stats
  • La instrucción SET STATISTICS TIME
  • La tabla del sistema sysprocesses
Después de instalar SQL Server 2005 Service Pack 2 (SP2), SQL Server registra un mensaje de error en el registro de errores cuando SQL Server detecta que los temporizadores de alta resolución no están sincronizados entre las CPU. El mensaje de error indica que los intervalos de rendimiento no sea exactos y que los usuarios deben utilizar datos de rendimiento con precaución.

El texto de la mensaje de error similar a uno de los mensajes de error siguientes:
Mensaje de error 1
El contador de marca de tiempo de CPU en id. de programador 2 no se sincroniza con otras CPU.
Mensaje de error 2
Frecuencia de marca de tiempo de CPU ha cambiado de 191469 a 1794177 pasos por milisegundo. Se utilizará la frecuencia nueva
SQL Server utiliza la instrucción de marca de tiempo real (diferencia, entre RDTSC contador) para adquirir el recuento de marcas de graduación de CPU de 64 bits. Puede dividir este valor por la frecuencia de CPU para convertir el valor en valores de milisegundo. Variaciones de tiempo pueden producirse cuando se produce los cambios de frecuencia de CPU o desfase.

CPU paso a paso

CPU paso a paso se define como un cambio deliberado en frecuencia de la CPU. CPU paso a paso también puede ser conocido como tecnología Intel SpeedStep o AMD PowerNow! tecnología. Cuando CPU paso a paso ocurre, la velocidad de CPU puede aumentar o disminuir en incrementos tan pequeños como 50 MHz para ahorrar energía y reducir la salida de calor. CPU que se encuentran en el mismo nodo de memoria no uniforme (NUMA) de acceso no ajustan independientemente frecuencias.

En la tabla siguiente se muestra cómo los cambios paso a paso de CPU pueden afectar a los cálculos de tiempo.
Contraer esta tablaAmpliar esta tabla
AcciónDiferencia entre RDTSC marcasPasos por milisegundo (frecuencia)Tiempo de reloj de pared
Iniciar lote12000
Paso de frecuencia abajo2001001ms
Lote final5003ms
TOTALES5004ms
SQL Server captura los pasos de diferencia entre RDTSC en pasos de diferencia entre RDTSC y el inicio y el final. A continuación, SQL Server divide las marcas de paso por el valor de frecuencia.

En este ejemplo, los cálculos de tiempo siguientes ocurren cuando se utiliza un valor de frecuencia de 200 o 100:
  • frecuencia 200: 500/200 = 2.5 ms
  • frecuencia de 100: 500/100 = 5 ms
Ninguno de los cálculos de tiempo coincide con el tiempo de reloj de pared real de 4 ms.

Si este cálculo se utiliza en un RPC: finalización las columnas de datos para eventos, la duración y la hora de finalización de traza se muestran incorrectamente. El RPC: finalización evento captura la hora del reloj de pared inicial y recuento de graduación de CPU. Para obtener el mayor tiempo de resolución de Windows se proporciona en columnas de datos de SQL Server 2005, la duración y la hora de finalización de un servidor SQL Server traza se calculan mediante el recuento de tics CPU transcurrido. La columna de hora de finalización se calcula agregando la columna de duración a la columna hora de inicio . En este ejemplo, la columna de hora de finalización se calcula agregando incorrectamente ms 2.5 o ms 5 a la hora de inicio.

Desfase

Desfase es un divergencia en valores de reloj de CPU. Sistemas que tienen varias CPU pueden producir diferentes valores de reloj de CPU para el mismo punto en tiempo. Aunque no es común, CPU experimentar separación de reloj a lo largo del tiempo.

En el ejemplo siguiente se muestra cómo los cambios de desfase pueden afectan el resultado de la columna de datos de duración de una traza de SQL Server. En el ejemplo se supone que la frecuencia de CPU permanece estable en 200 pasos por milisegundo. La tabla siguiente muestra los eventos en este escenario.
Contraer esta tablaAmpliar esta tabla
AcciónCPU programada de Windows1 CPU RDTSC2 CPU RDTSCTiempo de reloj de pared
Iniciar lote110011000
Lote final290019004 ms
TOTALES4 ms
SQL Server captura los pasos de diferencia entre RDTSC y en los puntos de inicio y en los puntos finales. A continuación, SQL Server divide los pasos de diferencia entre RDTSC por el valor de frecuencia. En este ejemplo, Windows había programado el subproceso de trabajo de SQL Server en dos CPU diferentes. El subproceso de trabajo de SQL Server que el lote de los servicios se ejecutó el primero en la primera CPU (1 de la CPU).

Sin embargo, la ejecución de proceso por lotes se ha interrumpido en algún momento, y SQL Server envía la ejecución de proceso por lotes a la cola pendiente. Cuando SQL Server envía el subproceso de trabajo de SQL Server que los servicios de este lote a la cola ejecutable nuevo, Windows envía el subproceso para ejecutar en la segunda CPU (2 CPU). El subproceso de trabajo de SQL Server completado la ejecución de la CPU 2. Debido a desfase de CPU, el valor de marca de final que fue capturado de la CPU 2 era 1900 en lugar de 900. Puede evitar este comportamiento si habilita la afinidad de procesador de SQL Server.

En este ejemplo se utilizan los cálculos de intervalos siguientes:
  • pero incorrecta informó valor: (100 1900 = 1800) / 200 = 9 ms
  • corregir valor: (900 100 = 800) / 200 = 4 ms
El valor de la columna duración de la RPC: finalización evento se debería notificar como ms 9 en lugar de 4 ms. este resultado es double más el valor correcto de 4 ms.

Mensajes de advertencia de desfase se agregan a SQL Server 2005 para indicar que los resultados de rendimiento que se mencionan anteriormente pueden no ser confiables. En algunas situaciones vuelen, SQL Server 2005 SP2 puede informar de los mensajes de advertencia acerca de los siguientes:
  • Mensajes de advertencia desfase false
  • Desfase puede convertirse en decenas de milisegundos sin causar un efecto notable del sistema
Debe tener cuidado cuando evaluar los resultados relacionados con el rendimiento y cuando se comparan los resultados relacionados con el rendimiento a intervalos de reloj de pared. Si no hay ningún signos de otros problemas de rendimiento, normalmente puede omitir los mensajes de advertencia desfase. Por ejemplo, normalmente puede omitir los mensajes de advertencia de desfase en las situaciones siguientes:
  • Se ejecutan procesos como se esperaba.
  • Las consultas de SQL Server no están ejecutando en modelos durational extraños.
  • No se ve signos de otros cuellos de botella.
Sin embargo, antes de omitir el desfase advertencia mensajes, le recomendamos que se ponga en contacto con el fabricante para asegurarse de que no conoce diferencia entre RDTSC problemas existen.

Puede utilizar el indicador de traza 8033 (?T8033) para volver al comportamiento informes en la versión original de SQL Server 2005 y en SQL Server 2005 SP1. La versión de lanzamiento original de SQL Server 2005 y SQL Server 2005 SP1 no informan de los mensajes de advertencia de sincronización. Si está ejecutando la versión original de SQL Server 2005 o SQL Server 2005 SP1 sin problemas, normalmente puede omitir los mensajes.

¿Por qué la instrucción WAITFOR DELAY funciona correctamente? ¿Los procesos periódicos del sistema?

Mecanismos de tiempo de espera no están afectados por el diseño de alta resolución. SQL Server no utiliza el temporizador de alta resolución para las actividades de temporizador. Algunas actividades de tiempo de espera se basan en el temporizador de resolución reducida que utiliza la función GetTickCount . Estas actividades de tiempo de espera incluyen tiempo de espera de bloqueo, la instrucción WAITFOR DELAY y detección de interbloqueo.
Para obtener más información, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
938448Un servidor basado en Windows Server 2003 puede experimentar desfase de contador de marca de tiempo si el servidor utiliza procesadores AMD Opteron de dos núcleos o multiprocesador procesadores AMD Opteron
895980Programas que utilizan la función QueryPerformanceCounter pueden funcionar mal en Windows Server 2003 y en Windows XP
Los productos de terceros que se analizan en este artículo están fabricados por compañías independientes de Microsoft. Microsoft no otorga ninguna garantía, implícita o de otro tipo, sobre el rendimiento o confiabilidad de estos productos.

Propiedades

Id. de artículo: 931279 - Última revisión: martes, 16 de diciembre de 2008 - Versión: 7.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
Palabras clave: 
kbmt kbtshoot kbexpertiseadvanced kbsql2005engine kbprb KB931279 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 931279

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com