Successfully reported this slideshow.
SQLOSIvan Lima                    Luciano MoreiraMCITP e windbg maniac              MC%, MVP, MCM wannabeivan.lima@srnimbu...
SQL Internal OpsConference      Agenda        Duração total: 1h 40min        Visão geral do Windows        SQLOS          ...
SQL Internal OpsConference     Visão geral do     Windows
SQL Internal OpsConferenceVisão geral do Windows
SQL Internal OpsConferenceVisão geral do Windows    Processos        Conjuntos de recursos necessários para executar um pr...
SQL Internal OpsConferenceVisão geral do Windows    Processos        Conjuntos de recursos necessários para executar um pr...
SQL Internal OpsConferenceVisão geral do Windows    Processos        Conjuntos de recursos necessários para executar um pr...
SQL Internal OpsConferenceVisão geral do Windows     Processos         Conjuntos de recursos necessários para executar um ...
SQL Internal OpsConferenceVisão geral do Windows     Processos         Conjuntos de recursos necessários para executar um ...
SQL Internal OpsConferenceVisão geral do Windows    Memória      Cada processo possui um espaço de memória virtual      4G...
SQL Internal OpsConferenceVisão geral do Windows User                         RAMKernel UserKernel UserKernel
SQL Internal OpsConferenceVisão geral do Windows User                         RAMKernel UserKernel UserKernel
SQL Internal OpsConferenceVisão geral do Windows User                         RAMKernel UserKernel UserKernel
SQL Internal OpsConferenceVisão geral do Windows User                         RAMKernel UserKernel UserKernel
SQL Internal OpsConferenceVisão geral do Windows User                               RAMKernel                   ??? UserKe...
SQL Internal OpsConferenceVisão geral do Windows User                                             RAMKernel               ...
SQL Internal OpsConferenceVisão geral do Windows User                                       RAMKernel UserKernel UserKerne...
SQL Internal OpsConferenceVisão geral do Windows    Subsistema de I/O        Black box para o Windows        Executa uma r...
SQL Internal OpsConference     SQLOS
SQL Internal OpsConferenceSQLOS    Mito: É uma camada de software que substitui o sistema    operacional!    É uma camada ...
SQL Internal OpsConferenceSQLOS  The key observation here is that dbms and OS must  cooperate. As such OS must have built ...
SQL Internal OpsConferenceSQLOS - Scheduling    Se for modelo preemptivo do Windows, como seria o processo    do SQL Serve...
SQL Internal OpsConferenceSQLOS - Scheduling                          Worker Pool             Request                     ...
SQL Internal OpsConferenceSQLOS - Scheduling    A maioria das threads no SQL Server passam a maior parte do    tempo bloqu...
SQL Internal OpsConferenceSQLOS - Scheduling    Wait types        Todo bloqueio possui um wait type associado que é       ...
SQL Internal OpsConferenceSQLOS - Scheduling                        CPU 0          CPU 1        CPU 2        CPU n        ...
SQL Internal OpsConferenceSQLOS - Memory    A maioria da memória do SQL Server é consumida pelo buffer    pool    Bpool co...
SQL Internal OpsConferenceSQLOS - Memory             Buffer Pool = Max Server Memory                       Plan Cache     ...
SQL Internal OpsConferenceSQLOS - Memory               Buffer Pool                   Pressão                   interna    ...
SQL Internal OpsConferenceSQLOS – I/O    Arquivos: dados e log        Sparse file, backup,    Cada arquivo possui padrões ...
SQL Internal OpsConferenceSQLOS – I/O    (1) BEGIN TRANSACTION    (2)     UPDATE dbo.PessoaFisica SET Nome = A WHERE ID = ...
SQL Internal OpsConferenceConclusão    “thin layer” entre SQL Server e sistema operacional    Modelo controlado de uso dos...
SQLOSDúvidas?
SQLOSIvan Lima                    Luciano MoreiraMCITP e windbg maniac              MC%, MVP, MCM wannabeivan.lima@srnimbu...
Upcoming SlideShare
Loading in …5
×

SQLInternalOps - SQLOS

488 views

Published on

SQL Server - SQLOS
SQL Internal Ops presentation.
Made by Luciano Moreira and Ivan Lima
Date presented: December, 7th, 2012

Published in: Technology
  • Be the first to comment

SQLInternalOps - SQLOS

  1. 1. SQLOSIvan Lima Luciano MoreiraMCITP e windbg maniac MC%, MVP, MCM wannabeivan.lima@srnimbus.com.br luciano.moreira@srnimbus.com.br@sqlinsane @luticmhttp://ivanglima.com http://luticm.blogpost.comwww.srnimbus.com.br www.srnimbus.com.br
  2. 2. SQL Internal OpsConference Agenda Duração total: 1h 40min Visão geral do Windows SQLOS Arquitetura do SQLOS SQLOS Scheduling SQLOS Memory SQLOS I/O Conclusão
  3. 3. SQL Internal OpsConference Visão geral do Windows
  4. 4. SQL Internal OpsConferenceVisão geral do Windows
  5. 5. SQL Internal OpsConferenceVisão geral do Windows Processos Conjuntos de recursos necessários para executar um programa Threads Thread é a unidade básica de execução dentro do sistema operacional e pode executar qualquer parte do código da aplicação Escalonamento preemptivo Uma thread não pode monopolizar o processador Quando o quantum acaba o SO escalona a próxima thread e faz uma troca de contexto Proc01 P20T45 P20T13 P20T06 P20T03 P29T01 P05T01 P11T03 P20T01
  6. 6. SQL Internal OpsConferenceVisão geral do Windows Processos Conjuntos de recursos necessários para executar um programa Threads Thread é a unidade básica de execução dentro do sistema operacional e pode executar qualquer parte do código da aplicação Escalonamento preemptivo Uma thread não pode monopolizar o processador Quando o quantum acaba o SO escalona a próxima thread e faz uma troca de contexto Proc01 P20T45 P20T13 P20T06 P20T03 P29T01 P05T01 P11T03 P20T01
  7. 7. SQL Internal OpsConferenceVisão geral do Windows Processos Conjuntos de recursos necessários para executar um programa Threads Thread é a unidade básica de execução dentro do sistema operacional e pode executar qualquer parte do código da aplicação Escalonamento preemptivo Uma thread não pode monopolizar o processador Quando o quantum acaba o SO escalona aQuantum próxima thread e faz uma troca de contexto Proc01 P20T45 P20T13 P20T06 P20T03 P29T01 P05T01 P11T03 P20T01
  8. 8. SQL Internal OpsConferenceVisão geral do Windows Processos Conjuntos de recursos necessários para executar um programa Threads Thread é a unidade básica de execução dentro do sistema operacional e pode executar qualquer parte do código da aplicação Escalonamento preemptivo Uma thread não pode monopolizar o processador Quando o quantum acaba o SO escalona a próxima thread e faz uma troca de contexto Proc01 P20T01 P20T45 P20T13 P20T06 P20T03 P29T01 P05T01 P11T03
  9. 9. SQL Internal OpsConferenceVisão geral do Windows Processos Conjuntos de recursos necessários para executar um programa Threads Thread é a unidade básica de execução dentro do sistema operacional e pode executar qualquer parte do código da aplicação Escalonamento preemptivo Uma thread não pode monopolizar o processador Quando o quantum acaba o SO escalona a próxima thread e faz uma troca de contexto Proc01 P20T01 P20T45 P20T13 P20T06 P20T03 P29T01 P05T01 P11T03
  10. 10. SQL Internal OpsConferenceVisão geral do Windows Memória Cada processo possui um espaço de memória virtual 4GB (x86) ou 8TB (x64)
  11. 11. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel UserKernel UserKernel
  12. 12. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel UserKernel UserKernel
  13. 13. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel UserKernel UserKernel
  14. 14. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel UserKernel UserKernel
  15. 15. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel ??? UserKernel UserKernel
  16. 16. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel ??? UserKernel UserKernel PAGING FILE
  17. 17. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel UserKernel UserKernel PAGING FILE
  18. 18. SQL Internal OpsConferenceVisão geral do Windows Subsistema de I/O Black box para o Windows Executa uma requisição de I/O e espera o retorno Operações Síncronas e assíncronas WriteFile* ReadFile* WriteFileGather ReadFileScatter Indicadores Disk queue length Avg disk sec/read Avg disk sec/write Alinhamento de partição, RAIDs, SSDs, etc.
  19. 19. SQL Internal OpsConference SQLOS
  20. 20. SQL Internal OpsConferenceSQLOS Mito: É uma camada de software que substitui o sistema operacional! É uma camada de abstração para desenvolvedor utilizar que faz interface com o SQL Server. Desenvolvedor é igual em qualquer lugar do mundo... NUMA aware desde sua concepção Pequeno, otimizado e independente do banco de dados Tarefas Serviços de multi-thread, worker pool e tarefas Serviços para gerenciamento de memória Serviços de monitoramento, hosting, tracing e debugging
  21. 21. SQL Internal OpsConferenceSQLOS The key observation here is that dbms and OS must cooperate. As such OS must have built in support for dbms or dbms must have a special scheduling layer. -- Slava Oks < 2012 = 60MB QP Execution Checkpoint, lazywriter, LockMonitor SQLServr.exe SQLLang.dll sqlmin.dll 2012 = 190 KB 30MB 30MB Scheduling SQLDK.dll NUMA Monitors SQLOS.dll xEvent Memory 2 MB I/O Comp Port 25KB Windows
  22. 22. SQL Internal OpsConferenceSQLOS - Scheduling Se for modelo preemptivo do Windows, como seria o processo do SQL Server com muitas threads... Proc01 Todas as threads tem trabalho para fazer? Esse modelo é eficiente?
  23. 23. SQL Internal OpsConferenceSQLOS - Scheduling Worker Pool Request Task 39 Scheduler 0 Result set CPU 0
  24. 24. SQL Internal OpsConferenceSQLOS - Scheduling A maioria das threads no SQL Server passam a maior parte do tempo bloqueadas Internamente são organizados em listas Worker: lista os worker disponíveis Runnable: workers prontos para executar uma tarefa Waiter: lista os workers que estão esperando por um recurso I/O: lista as requisições de I/O que estão pendentes Timer: registra lista com workers que são ativados em intervalos regulares Suspended Runnable Running
  25. 25. SQL Internal OpsConferenceSQLOS - Scheduling Wait types Todo bloqueio possui um wait type associado que é contabiliado Tarefas de housekeeping Workers de monitoramento e tarefas internas Modelo de código do SQL Server void SchedulerManager::ThreadEntryPoint() { // get worker // run worker // get task // run task // Pontos de yield e housekeeping // GOTO “get task” }
  26. 26. SQL Internal OpsConferenceSQLOS - Scheduling CPU 0 CPU 1 CPU 2 CPU n Sched 0 Sched 1 Sched 2 Sched n Tasks Tasks Tasks Tasks SOS Schedules Tasks Scheduler Scheduler Scheduler Scheduler Work Work Work Work Dispatcher Dispatcher Dispatcher Dispatcher Tasks – Load balanced across schedulers
  27. 27. SQL Internal OpsConferenceSQLOS - Memory A maioria da memória do SQL Server é consumida pelo buffer pool Bpool consiste de buffers de 8KB (páginas) Bpool não é somente para cache de dados Controlado por min server memory e max server memory SQL Server 2000- Memory managers SQL Server 2005+ Memory clerks Alocações single-page utilizam o Bpool Mudança importante entre SQL Server 2008 e 2012 Somente parte de DWA fica fora do BPool
  28. 28. SQL Internal OpsConferenceSQLOS - Memory Buffer Pool = Max Server Memory Plan Cache Query Workspace Lock Manager Query Compile Token Perm Data Cache Xevent, SQLOS, Metadata, outros…
  29. 29. SQL Internal OpsConferenceSQLOS - Memory Buffer Pool Pressão interna Pressão Plan cache externaW PressãoI globalN (Bpool)DOWS Data cache
  30. 30. SQL Internal OpsConferenceSQLOS – I/O Arquivos: dados e log Sparse file, backup, Cada arquivo possui padrões de acesso diferenciados Diferentes mecanismos dentro do SQL Server disparam requisições de I/O Log buffer flush (ex.: commit) Checkpoint Lazy writer Eager write Read ahead Chamadas assíncronas: permitem o modelo cooperativo do SQL Server funcionar (maioria das chamadas)
  31. 31. SQL Internal OpsConferenceSQLOS – I/O (1) BEGIN TRANSACTION (2) UPDATE dbo.PessoaFisica SET Nome = A WHERE ID = 10 (3) COMMIT TRANSACTION Log Buffer (1) (2) (3) (memória) LSN – Log Sequence NumberWriteFile FlushEstrutura OVERLAPPED (1) 0000006d:00000078:0001 CompletoHasOverlappedIoCompleted (2) 0000006d:00000078:0002 (3) 0000006d:00000078:0003 Log Flush … Arquivo de… (1) (2) (3) Log (disco)
  32. 32. SQL Internal OpsConferenceConclusão “thin layer” entre SQL Server e sistema operacional Modelo controlado de uso dos recursos (CPU, memória, I/O) Escrito pelos melhores programadores do time do SQL Server (e possivelmente da Microsoft) Usualmente você não fica explorando threads e stacks a todo momento, muito menos com windbg É um excelente mecanismo de estudo, não de troubleshooting Problemas mais complexos exigem um conhecimento do funcionamento do SQL Server
  33. 33. SQLOSDúvidas?
  34. 34. SQLOSIvan Lima Luciano MoreiraMCITP e windbg maniac MC%, MVP, MCM wannabeivan.lima@srnimbus.com.br luciano.moreira@srnimbus.com.br@sqlinsane @luticmhttp://ivanglima.com http://luticm.blogpost.comwww.srnimbus.com.br www.srnimbus.com.br

×