O que faz
Cole as estatísticas de tempo de tmsh show ltm rule <nome> field-fmt, informe a velocidade de clock e a contagem de núcleos da sua plataforma, e esta ferramenta reproduz as quatro tabelas da antiga planilha iRules Runtime Calculator do DevCentral, inteiramente no navegador. Para cada evento, e para a regra como um todo, ela mostra um melhor, típico e pior caso (os ciclos mínimo, médio e máximo) em quatro visões: ciclos de CPU brutos, tempo de execução em microssegundos, a porcentagem de CPU que uma única requisição custa e o máximo de requisições por segundo que a regra pode sustentar. Nada é enviado para lugar nenhum.
A medição que ela lê
O comando timing registra, por evento, o total de execuções e os ciclos consumidos como um mínimo, médio e máximo. Com field-fmt, isso aparece como blocos contendo avg-cycles, min-cycles, max-cycles e total-executions (muitas vezes abreviados, como 43.0K, que a ferramenta expande). A forma clássica de uma linha, HTTP_REQUEST 729 total 0 fail 0 abort | Cycles (min, avg, max) = (3693, 3959, 53936), também é aceita. Desde a versão 11.5.0 o timing fica ligado por padrão. A média é a coluna confiável. O máximo é inflado porque a primeira execução de uma regra recém-editada inclui otimização de compilação única, e o escalonamento do sistema operacional adiciona sobrecarga pelo menos uma vez por tick; o timing em si carrega uma margem de erro de cerca de 70 a 100 ciclos. Empurre uma carga grande e representativa (dez mil requisições ou mais) e limpe as estatísticas uma vez após o primeiro acesso.
Como os números são derivados
Tudo flui de uma figura que a planilha chama de Cycles por segundo, que ela calcula como núcleos vezes clock em MHz vezes um milhão, direto de /proc/cpuinfo; esse é o padrão aqui, e um override opcional aceita um número específico da plataforma. A partir dele: o tempo de execução em microssegundos é ciclos vezes um milhão dividido por Cycles por segundo; a porcentagem de CPU por requisição é ciclos dividido por Cycles por segundo; e o máximo de requisições por segundo é Cycles por segundo dividido por ciclos. A linha Total soma os ciclos por evento e deriva seus microssegundos, porcentagem e requisições dessa soma. Uma ressalva que a ferramenta reitera: essas figuras assumem que o trabalho se espalha por todos os núcleos sob CMP, então se uma regra modifica uma variável global e é demovida para um único núcleo, recalcule com uma contagem de núcleos de um.