Como posso tornar meu comando mais suscetível a lentidão do sistema para usá-lo como um widget de QoS visual na minha área de trabalho?

0

Eu tive algum evento de lentidão no sistema 1 depois de usar um comando por engano, então achei que poderia usar um "widget" para mostrar qualidade de serviço ou pelo menos mostrar quando a QoS foi degradada e obter feedback em tempo hábil. Temos essa capacidade natural de perceber a degradação na reprodução de uma seqüência de imagens, então eu queria aproveitar isso. Por isso, selecionei uma seqüência de vídeo mp4 2 e fiz um arquivo .gif de um segmento dele com ffmpeg :

ffmpeg -i snf.mp4 -ss 00:01:24.0 -t 00:00:04.03 -s qcif -qscale:v 10 -an output.gif

Portanto, esta será uma imagem de qcif (176x144) gif do tamanho do carimbo. Neste exemplo extraí uns 4.03 segundos começando em 1:24 na sequência. Faz um arquivo de 1,3MiB. Que eu, então, animate :

animate -borderwidth 0 output.gif &

Então eu "flutuo" aquela pequena janela no meu gerenciador de janelas de ladrilho, e continuo à mão. A sequência faz um loop e, se você clicar na imagem, você verá um menu semelhante a "display" , onde você tem aquele (bonito) auto-reverse opção ... então o clipe toca por seus 4 segundos, em seguida, joga para trás e para trás e para frente!

Eu pensei que talvez eu pudesse começar com ionice -c 2 -n 0 (mas não pode haver i / o aqui realmente) ou renegá-lo com renice -n -10 , mas não consigo aceitar como "expor" isso a "load", de modo que seria a primeira coisa impactada se houver uma desaceleração. Pelo que entendi, se a execução for muito boa, ela deve ser afetada o tempo todo, mas isso não estaria relacionado a uma lentidão do sistema, apenas a ser "colidido". Se não for nada bom, então não teria que enfrentar nenhuma desaceleração a menos que nos estados mais terríveis e isso derrotaria o propósito.

Como posso definir meu comando para ser afetado em prioridade (ao contrário de ter ou não ter prioridade de execução) para outros programas na minha área de trabalho para servir como um widget de QoS? Ou isso é apenas equivocado e como o balanceamento de carga tem tudo a ver com heurística eu não serei capaz de usar algo assim?

ps aux saída de especificação para animate :

14454  0.3  2.9 228232 118768 pts/5   Sl   05:06   2:36 animate -borderwidth 0 test2.gif

1. Eu emiti um comando errado usando convert ( ImageMagick ) e acabou esgotando os recursos do sistema e auto-terminado - Eu pensei que estava fazendo algo legítimo, então deixei passar. Durante esse tempo, vi meu sistema desacelerar à medida que a carga aumentava; Windows não está atualizando, htop aparentemente congelante, uso intenso de disco e tremido com o ponteiro do mouse. Quando o sistema estava se aproximando, percebi que olhar para o movimento do ponteiro me dava uma boa "sensação" da lentidão, por assim dizer. Mais então eu achei que olhando o indicador de carga chegar em 7-8 na minha barra de status (i3). De modo geral, para monitoramento e informações em tempo real, uso htop e i3 status bar. Mas também estou interessado em diferentes tipos de feedback do sistema.

2. Para ajudar com minhas habilidades perceptivas, selecionei um clipe de dança. Algum tempo atrás eu vi no youtube essa famosa sequência de dança de Saturday Night Fever (Bee Gees - "Você deveria estar dançando") com M. John Travolta assumindo toda a pista de dança. Seu movimento de referência é rítmico e as luzes batem em um padrão discernível.

    
por jus cogens prime 06.06.2014 / 23:57

1 resposta

2

Espero que você saiba que já existe um lote de widgets de monitoramento do sistema. Mas de qualquer maneira:

NOTA: Dependendo da sua configuração, pode haver um caminho de hardware dedicado para o vídeo. Portanto, é possível que isso não exija realmente nenhum tempo de CPU. Mas enquanto o ffmpeg pode usar isso, o anima provavelmente não o faz.

NOTA: Para que sua animação fique mais lenta, talvez seja necessário usar uma quantidade não trivial de tempo de CPU. Isso fará com que a CPU use mais eletricidade e fique mais quente. Se você tiver velocidades de ventilador dinâmicas, isso tornará sua máquina mais barulhenta.

Primeiro, números positivos para o bem são menos prioritários, então você deve usar 19 (a menor prioridade). Em segundo lugar, há realmente uma opção melhor: você pode alterar a política de agendamento, pelo menos no Linux. Existe um programa schedtool que pode supostamente fazer isso (ou você pode usar sched_setscheduler em C). Se você definir sua política como SCHED_IDLE , essa será uma prioridade ainda menor que a gentileza 19.

Note também que, se seus outros processos estiverem fora da memória (ou seja, seu sistema está se debatendo), sua animação pode não notar primeiro, já que não está solicitando memória. OTOH, um monitor de atividades de troca, vai pegar isso rapidamente.

Por fim, existem várias maneiras de impedir que programas de fuga tornem seu sistema inutilizável: defina um ulimit para evitar o uso excessivo de recursos ou use algo como ulatencyd para acelerá-los automaticamente usando cgroups.

    
por 07.06.2014 / 00:16