• Save
SQLInternalOps - SQLOS
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

SQLInternalOps - SQLOS

on

  • 508 views

SQL Server - SQLOS

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

Statistics

Views

Total Views
508
Views on SlideShare
504
Embed Views
4

Actions

Likes
1
Downloads
0
Comments
0

1 Embed 4

http://www.slashdocs.com 4

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

SQLInternalOps - SQLOS Presentation Transcript

  • 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. 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. SQL Internal OpsConference Visão geral do Windows
  • 4. SQL Internal OpsConferenceVisão geral do Windows
  • 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. 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. 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. 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. 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. 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. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel UserKernel UserKernel
  • 12. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel UserKernel UserKernel
  • 13. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel UserKernel UserKernel
  • 14. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel UserKernel UserKernel
  • 15. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel ??? UserKernel UserKernel
  • 16. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel ??? UserKernel UserKernel PAGING FILE
  • 17. SQL Internal OpsConferenceVisão geral do Windows User RAMKernel UserKernel UserKernel PAGING FILE
  • 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. SQL Internal OpsConference SQLOS
  • 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. 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. 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. SQL Internal OpsConferenceSQLOS - Scheduling Worker Pool Request Task 39 Scheduler 0 Result set CPU 0
  • 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. 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. 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. 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. 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. SQL Internal OpsConferenceSQLOS - Memory Buffer Pool Pressão interna Pressão Plan cache externaW PressãoI globalN (Bpool)DOWS Data cache
  • 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. 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. 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. SQLOSDúvidas?
  • 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