|
O hwpmc(4) existe no FreeBSD desde o início do ramo RELENG_6, e portanto está longe de ser uma novidade no sistema. Mas é pouco conhecido, e normalmente utilizado apenas por desenvolvedores ou administradores de sistema com conhecimento mais avançado, tal qual ktrace por exemplo. O que o hwpmc(4) faz é virtualizar os PMCs (Contadores de Medidas de Performance), recurso disponível praticamente em todos os processadores modernos, que mede informações de baixo nível em eventos de hardware como perda de cache de CPU, perda de TLB e antecipação errônea de ramificação de instruções.
Podendo virtualizar esses contadores, diversos processos podem, simultaneamente, utilizá-los, de forma concorrente. Com isso é possível obter modelos e profiling dessas informações, inclusive em operações em múltiplas CPU. Com isso pode-se rastrear todos os eventos de hardware que aconteçam, e comparar com os eventos que acontecem normalmente e poder identificar por exemplo, atividades incomuns. Tudo bom, tudo muito bonito, mas qual a novidade? A divisão de código aberto do Google financiou o desenvolvimento de um novo recurso complementar no hwpmc(4) do FreeBSD, e a reimplementação parcial do recurso, que portanto, será no FreeBSD RELENG_7 diferente, internamente, do que temos até agora. O novo, e a partir de agora principal recurso do hwpmc(4) é que o monitoramente das atividades não é mais passivo. Foi adicionado um recurso que permite a captura de chamadas realizadas pelas aplicações que disparam os eventos físicos na CPU, oferecendo mais informações e melhorando a percepção do comportamento do sistema. Resumidamente, agora é possível saber exatamente em que momento, no código da aplicação, os recursos de CPU são disparados, e fazer o profiling de que chamadas, em que laços do código ou sob que circunstâncias as atividades de CPU (notávelmente as incomuns) tornam-se mais ativas e presentes. Esses "momentos" no código, são classificados de hot locations. Permitem aos desenvolvedores e administradores avançados de sistema identificar o motivo, com precisão, do consumo de recurso de CPU e principalmente comparar em tabelas de profiling as chamadas e trechos que, ao ser ativados, disparam a maior parte das instruções, oferecendo portanto estatística, complementarmente. De acordo com Kris Kennaway, desenvolvedor FreeBSD, "hwpmc é uma das nossas ferramentas mais poderosas para medir e entender performance de CPU no FreeBSD. Suportar profiling de chamadas era um recurso importante que nãodispunhamos, e que agora simplifica a habilitado dos desenvolvedores em analizar gargalos de performance no kernel, em código de aplicações de nível de usário, e principalmente de entender seus motivos. Essas adições foram valiosas no ciclo de desenvolvimento do FreeBSD 7." O desenvolvedor Kip Macy destaca que os novos recursos do hwpmc(4) foram de valor inestimável para o tuning do suporte FreeBSD a ambiente de 10Gbit/s - um dos projetos de destaque na lista da FreeBSD Foundation. Você pode ler mais sobre as melhorias no hwpmc(4) no FreeBSD, nessa entrada do Google Code Blog, e também no breve relatório da Fundação FreeBSD , além do Wiki do Projeto.
|