SlideShare une entreprise Scribd logo
1  sur  34
SQLOS



Ivan Lima                    Luciano Moreira
MCITP e windbg maniac              MC%, MVP, MCM wannabe
ivan.lima@srnimbus.com.br   luciano.moreira@srnimbus.com.br
@sqlinsane                                              @luticm
http://ivanglima.com                 http://luticm.blogpost.com
www.srnimbus.com.br                      www.srnimbus.com.br
SQL Internal Ops
Conference



      Agenda
        Duração total: 1h 40min

        Visão geral do Windows
        SQLOS
           Arquitetura do SQLOS
           SQLOS Scheduling
           SQLOS Memory
           SQLOS I/O
        Conclusão
SQL Internal Ops
Conference




     Visão geral do
     Windows
SQL Internal Ops
Conference
Visão geral do Windows
SQL Internal Ops
Conference
Visã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
SQL Internal Ops
Conference
Visã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
SQL Internal Ops
Conference
Visã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
SQL Internal Ops
Conference
Visã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
SQL Internal Ops
Conference
Visã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
SQL Internal Ops
Conference
Visão geral do Windows



    Memória
      Cada processo possui um espaço de memória virtual
      4GB (x86) ou 8TB (x64)
SQL Internal Ops
Conference
Visão geral do Windows


 User
                         RAM

Kernel




 User



Kernel




 User



Kernel
SQL Internal Ops
Conference
Visão geral do Windows


 User
                         RAM

Kernel




 User



Kernel




 User



Kernel
SQL Internal Ops
Conference
Visão geral do Windows


 User
                         RAM

Kernel




 User



Kernel




 User



Kernel
SQL Internal Ops
Conference
Visão geral do Windows


 User
                         RAM

Kernel




 User



Kernel




 User



Kernel
SQL Internal Ops
Conference
Visão geral do Windows


 User
                               RAM

Kernel                   ???



 User



Kernel




 User



Kernel
SQL Internal Ops
Conference
Visão geral do Windows


 User
                                             RAM

Kernel                                 ???



 User



Kernel




 User



Kernel
                         PAGING FILE
SQL Internal Ops
Conference
Visão geral do Windows


 User
                                       RAM

Kernel




 User



Kernel




 User



Kernel
                         PAGING FILE
SQL Internal Ops
Conference
Visã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.
SQL Internal Ops
Conference




     SQLOS
SQL Internal Ops
Conference
SQLOS



    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
SQL Internal Ops
Conference
SQLOS
  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
SQL Internal Ops
Conference
SQLOS - 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?
SQL Internal Ops
Conference
SQLOS - Scheduling
                          Worker Pool




             Request
                                        Task 39

                                        Scheduler
                                            0




                       Result set       CPU 0
SQL Internal Ops
Conference
SQLOS - 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
SQL Internal Ops
Conference
SQLOS - 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”
      }
SQL Internal Ops
Conference
SQLOS - 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
SQL Internal Ops
Conference
SQLOS - 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
SQL Internal Ops
Conference
SQLOS - Memory


             Buffer Pool = Max Server Memory




                       Plan Cache              Query Workspace



                     Lock Manager               Query Compile


                                                  Token Perm

                      Data Cache
                                                Xevent, SQLOS,
                                               Metadata, outros…
SQL Internal Ops
Conference
SQLOS - Memory


               Buffer Pool


                   Pressão
                   interna
     Pressão                 Plan cache
     externa
W
                                          Pressão
I
                                           global
N
                                          (Bpool)
D
O
W
S
                             Data cache
SQL Internal Ops
Conference
SQLOS – 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)
SQL Internal Ops
Conference
SQLOS – 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 Number
WriteFile                              Flush
Estrutura OVERLAPPED                                     (1)   0000006d:00000078:0001
                                       Completo
HasOverlappedIoCompleted                                 (2)   0000006d:00000078:0002
                                                         (3)   0000006d:00000078:0003
                     Log Flush
                                                                            … Arquivo de
…                  (1) (2)       (3)                                        Log (disco)
SQL Internal Ops
Conference
Conclusã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
SQLOS

Dúvidas?
SQLOS



Ivan Lima                    Luciano Moreira
MCITP e windbg maniac              MC%, MVP, MCM wannabe
ivan.lima@srnimbus.com.br   luciano.moreira@srnimbus.com.br
@sqlinsane                                              @luticm
http://ivanglima.com                 http://luticm.blogpost.com
www.srnimbus.com.br                      www.srnimbus.com.br

Contenu connexe

Tendances

Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Leinylson Fontinele
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Leinylson Fontinele
 
Sistemas Operacionais - Gnu/Linux Gerenciando Processos
Sistemas Operacionais - Gnu/Linux Gerenciando ProcessosSistemas Operacionais - Gnu/Linux Gerenciando Processos
Sistemas Operacionais - Gnu/Linux Gerenciando ProcessosLuiz Arthur
 
Processos threads senai
Processos threads senaiProcessos threads senai
Processos threads senaiCarlos Melo
 
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Leinylson Fontinele
 
Fso parte iii
Fso parte iiiFso parte iii
Fso parte iiipaulocsm
 
Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de OliveiraSistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de OliveiraWellington Oliveira
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsPedro De Almeida
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Charles Fortes
 
Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)Jose Silva
 
Coroutine e concorrência python
Coroutine e concorrência   python Coroutine e concorrência   python
Coroutine e concorrência python Kaueh Moreno
 
Oracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosOracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosDaniela Macedo
 
Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Cristiano Pires Martins
 
Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Jose Silva
 

Tendances (20)

SO-02 Processos
SO-02 ProcessosSO-02 Processos
SO-02 Processos
 
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
 
Sistemas Operacionais - Gnu/Linux Gerenciando Processos
Sistemas Operacionais - Gnu/Linux Gerenciando ProcessosSistemas Operacionais - Gnu/Linux Gerenciando Processos
Sistemas Operacionais - Gnu/Linux Gerenciando Processos
 
Processos threads senai
Processos threads senaiProcessos threads senai
Processos threads senai
 
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
 
Processos e threads cap 02 (i unidade)
Processos e threads   cap 02 (i unidade)Processos e threads   cap 02 (i unidade)
Processos e threads cap 02 (i unidade)
 
Fso parte iii
Fso parte iiiFso parte iii
Fso parte iii
 
Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de OliveiraSistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
 
Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)
 
Coroutine e concorrência python
Coroutine e concorrência   python Coroutine e concorrência   python
Coroutine e concorrência python
 
Treinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12cTreinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12c
 
Oracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosOracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de Dados
 
ICC-07 Softwares - Introdução
ICC-07 Softwares - IntroduçãoICC-07 Softwares - Introdução
ICC-07 Softwares - Introdução
 
Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1
 
Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)
 
Oracle 11g
Oracle 11gOracle 11g
Oracle 11g
 

Similaire à SQLInternalOps - SQLOS

Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaLincoln Lamas
 
Sistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareSistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareCharles Fortes
 
Aspectos basicos de hardware e software
Aspectos basicos de hardware e softwareAspectos basicos de hardware e software
Aspectos basicos de hardware e softwareMarcelle Guiné
 
Aspectos basicos de hardware e software
Aspectos basicos de hardware e softwareAspectos basicos de hardware e software
Aspectos basicos de hardware e softwareMarcelle Guiné
 
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionaisSuperTec1
 
2 organização do sistema operativo - sistemas operativos
2   organização do sistema operativo - sistemas operativos2   organização do sistema operativo - sistemas operativos
2 organização do sistema operativo - sistemas operativosMaria194536
 
Lecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptxLecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptxcassamo2
 
M1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxM1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxDoraestevao
 
Dnad 2012 iis - uma questão de arquitetura
Dnad 2012   iis - uma questão de arquiteturaDnad 2012   iis - uma questão de arquitetura
Dnad 2012 iis - uma questão de arquiteturaSidney Filho
 
IIS - Uma questão de arquitetura
IIS - Uma questão de arquiteturaIIS - Uma questão de arquitetura
IIS - Uma questão de arquiteturasidneyfilho
 
Aula 2 sistemas operacionais
Aula 2 sistemas operacionaisAula 2 sistemas operacionais
Aula 2 sistemas operacionaisCarlos Melo
 
Hierarquia dos Processadores da Intel.pptx
Hierarquia dos Processadores da Intel.pptxHierarquia dos Processadores da Intel.pptx
Hierarquia dos Processadores da Intel.pptxOsvaldoJooNhabete
 
SD_Aula_04_Introdução ao SD.pdf
SD_Aula_04_Introdução ao SD.pdfSD_Aula_04_Introdução ao SD.pdf
SD_Aula_04_Introdução ao SD.pdfFerro Gaita
 
Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Joicy Souza
 
Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiRicardo Martins ☁
 

Similaire à SQLInternalOps - SQLOS (20)

Redes2 aula02
Redes2 aula02Redes2 aula02
Redes2 aula02
 
Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da Microarquitetura
 
Sistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareSistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e Software
 
Aspectos basicos de hardware e software
Aspectos basicos de hardware e softwareAspectos basicos de hardware e software
Aspectos basicos de hardware e software
 
Aspectos basicos de hardware e software
Aspectos basicos de hardware e softwareAspectos basicos de hardware e software
Aspectos basicos de hardware e software
 
Aula 03
Aula 03Aula 03
Aula 03
 
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
 
aula_04.pdf
aula_04.pdfaula_04.pdf
aula_04.pdf
 
2 organização do sistema operativo - sistemas operativos
2   organização do sistema operativo - sistemas operativos2   organização do sistema operativo - sistemas operativos
2 organização do sistema operativo - sistemas operativos
 
Redes 6
Redes 6Redes 6
Redes 6
 
Lecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptxLecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptx
 
M1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxM1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptx
 
Dnad 2012 iis - uma questão de arquitetura
Dnad 2012   iis - uma questão de arquiteturaDnad 2012   iis - uma questão de arquitetura
Dnad 2012 iis - uma questão de arquitetura
 
IIS - Uma questão de arquitetura
IIS - Uma questão de arquiteturaIIS - Uma questão de arquitetura
IIS - Uma questão de arquitetura
 
Aula 2 sistemas operacionais
Aula 2 sistemas operacionaisAula 2 sistemas operacionais
Aula 2 sistemas operacionais
 
Hierarquia dos Processadores da Intel.pptx
Hierarquia dos Processadores da Intel.pptxHierarquia dos Processadores da Intel.pptx
Hierarquia dos Processadores da Intel.pptx
 
SD_Aula_04_Introdução ao SD.pdf
SD_Aula_04_Introdução ao SD.pdfSD_Aula_04_Introdução ao SD.pdf
SD_Aula_04_Introdução ao SD.pdf
 
Roteadores
RoteadoresRoteadores
Roteadores
 
Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Questões de Sistemas Operacionais
Questões de Sistemas Operacionais
 
Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - Bemobi
 

Plus de Luciano Moreira

Apresentando o Azure DocumentDB
Apresentando o Azure DocumentDBApresentando o Azure DocumentDB
Apresentando o Azure DocumentDBLuciano Moreira
 
Entendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL ServerEntendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL ServerLuciano Moreira
 
Do MTA ao MCM*, carreira SQL Server e DBA multiplataforma
Do MTA ao MCM*, carreira SQL Server e DBA multiplataformaDo MTA ao MCM*, carreira SQL Server e DBA multiplataforma
Do MTA ao MCM*, carreira SQL Server e DBA multiplataformaLuciano Moreira
 
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVOMANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVOLuciano Moreira
 
SQLServerDF XII - Wait Types
SQLServerDF XII - Wait TypesSQLServerDF XII - Wait Types
SQLServerDF XII - Wait TypesLuciano Moreira
 
SQLServerDF XIII - xEvents
SQLServerDF XIII - xEventsSQLServerDF XIII - xEvents
SQLServerDF XIII - xEventsLuciano Moreira
 
Confiabilidade de pacotes no SSIS
Confiabilidade de pacotes no SSISConfiabilidade de pacotes no SSIS
Confiabilidade de pacotes no SSISLuciano Moreira
 

Plus de Luciano Moreira (7)

Apresentando o Azure DocumentDB
Apresentando o Azure DocumentDBApresentando o Azure DocumentDB
Apresentando o Azure DocumentDB
 
Entendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL ServerEntendendo o paralelismo no SQL Server
Entendendo o paralelismo no SQL Server
 
Do MTA ao MCM*, carreira SQL Server e DBA multiplataforma
Do MTA ao MCM*, carreira SQL Server e DBA multiplataformaDo MTA ao MCM*, carreira SQL Server e DBA multiplataforma
Do MTA ao MCM*, carreira SQL Server e DBA multiplataforma
 
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVOMANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
 
SQLServerDF XII - Wait Types
SQLServerDF XII - Wait TypesSQLServerDF XII - Wait Types
SQLServerDF XII - Wait Types
 
SQLServerDF XIII - xEvents
SQLServerDF XIII - xEventsSQLServerDF XIII - xEvents
SQLServerDF XIII - xEvents
 
Confiabilidade de pacotes no SSIS
Confiabilidade de pacotes no SSISConfiabilidade de pacotes no SSIS
Confiabilidade de pacotes no SSIS
 

Dernier

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 

Dernier (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 

SQLInternalOps - SQLOS

  • 1. SQLOS Ivan Lima Luciano Moreira MCITP e windbg maniac MC%, MVP, MCM wannabe ivan.lima@srnimbus.com.br luciano.moreira@srnimbus.com.br @sqlinsane @luticm http://ivanglima.com http://luticm.blogpost.com www.srnimbus.com.br www.srnimbus.com.br
  • 2. SQL Internal Ops Conference 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 Ops Conference Visão geral do Windows
  • 5. SQL Internal Ops Conference Visã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 Ops Conference Visã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 Ops Conference Visã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 Ops Conference Visã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 Ops Conference Visã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 Ops Conference Visão geral do Windows Memória Cada processo possui um espaço de memória virtual 4GB (x86) ou 8TB (x64)
  • 11. SQL Internal Ops Conference Visão geral do Windows User RAM Kernel User Kernel User Kernel
  • 12. SQL Internal Ops Conference Visão geral do Windows User RAM Kernel User Kernel User Kernel
  • 13. SQL Internal Ops Conference Visão geral do Windows User RAM Kernel User Kernel User Kernel
  • 14. SQL Internal Ops Conference Visão geral do Windows User RAM Kernel User Kernel User Kernel
  • 15. SQL Internal Ops Conference Visão geral do Windows User RAM Kernel ??? User Kernel User Kernel
  • 16. SQL Internal Ops Conference Visão geral do Windows User RAM Kernel ??? User Kernel User Kernel PAGING FILE
  • 17. SQL Internal Ops Conference Visão geral do Windows User RAM Kernel User Kernel User Kernel PAGING FILE
  • 18. SQL Internal Ops Conference Visã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.
  • 20. SQL Internal Ops Conference SQLOS 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 Ops Conference SQLOS 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 Ops Conference SQLOS - 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 Ops Conference SQLOS - Scheduling Worker Pool Request Task 39 Scheduler 0 Result set CPU 0
  • 24. SQL Internal Ops Conference SQLOS - 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 Ops Conference SQLOS - 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 Ops Conference SQLOS - 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 Ops Conference SQLOS - 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 Ops Conference SQLOS - 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 Ops Conference SQLOS - Memory Buffer Pool Pressão interna Pressão Plan cache externa W Pressão I global N (Bpool) D O W S Data cache
  • 30. SQL Internal Ops Conference SQLOS – 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 Ops Conference SQLOS – 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 Number WriteFile Flush Estrutura OVERLAPPED (1) 0000006d:00000078:0001 Completo HasOverlappedIoCompleted (2) 0000006d:00000078:0002 (3) 0000006d:00000078:0003 Log Flush … Arquivo de … (1) (2) (3) Log (disco)
  • 32. SQL Internal Ops Conference Conclusã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
  • 34. SQLOS Ivan Lima Luciano Moreira MCITP e windbg maniac MC%, MVP, MCM wannabe ivan.lima@srnimbus.com.br luciano.moreira@srnimbus.com.br @sqlinsane @luticm http://ivanglima.com http://luticm.blogpost.com www.srnimbus.com.br www.srnimbus.com.br