Qual é a conexão entre jiffies e IPS? Como converter jiffies em IPS?

3

A leitura de /proc/PID/stat muitas informações podem ser processadas. Gostaria de ver quantas porcentagens foram usadas da energia da CPU por esse processo. Há um monte de variáveis por aqui (tempo, ritmo, tempo de giro, giro, gtime, cgtime), mas eles estão em momentos. O problema com isso é que o tempo depende da velocidade da CPU atual. No entanto IPS (instruções por segundo) depende inctruções definidas, e que programa executamos, mas talvez isso seja mais preciso.

Eu gostaria de usar essa informação em sistemas embarcados, onde eu poderia escolher uma CPU que apenas satisfizesse os recursos. Desta forma, não tenho que gastar muito para um sistema de grandes dimensões.

Aqui está o conteúdo do arquivo stat (a partir de 2.6.30-rc7):

 Field          Content
  pid           process id
  tcomm         filename of the executable
  state         state (R is running, S is sleeping, D is sleeping in an
                uninterruptible wait, Z is zombie, T is traced or stopped)
  ppid          process id of the parent process
  pgrp          pgrp of the process
  sid           session id
  tty_nr        tty the process uses
  tty_pgrp      pgrp of the tty
  flags         task flags
  min_flt       number of minor faults
  cmin_flt      number of minor faults with child's
  maj_flt       number of major faults
  cmaj_flt      number of major faults with child's
  utime         user mode jiffies
  stime         kernel mode jiffies
  cutime        user mode jiffies with child's
  cstime        kernel mode jiffies with child's
  priority      priority level
  nice          nice level
  num_threads   number of threads
  it_real_value (obsolete, always 0)
  start_time    time the process started after system boot
  vsize         virtual memory size
  rss           resident set memory size
  rsslim        current limit in bytes on the rss
  start_code    address above which program text can run
  end_code      address below which program text can run
  start_stack   address of the start of the stack
  esp           current value of ESP
  eip           current value of EIP
  pending       bitmap of pending signals
  blocked       bitmap of blocked signals
  sigign        bitmap of ignored signals
  sigcatch      bitmap of catched signals
  wchan         address where process went to sleep
  0             (place holder)
  0             (place holder)
  exit_signal   signal to send to parent thread on exit
  task_cpu      which CPU the task is scheduled on
  rt_priority   realtime priority
  policy        scheduling policy (man sched_setscheduler)
  blkio_ticks   time spent waiting for block IO
  gtime         guest time of the task in jiffies
  cgtime        guest time of the task children in jiffies
    
por roncsak 12.10.2012 / 12:58

1 resposta

1

O instante não depende diretamente da velocidade da CPU. É um período de tempo que é usado para contar diferentes intervalos de tempo no kernel. O comprimento do jiffy é selecionado no momento da compilação do kernel. Mais sobre isso: man 7 time

Um dos usos fundamentais dos jiffies é o agendamento de processos. Um instante é o período em que o agendador permitirá que um processo seja executado sem uma tentativa de reagendar e trocar o processo para permitir que outro processo seja executado.

Para processadores lentos, é bom ter 100 jiffies por segundo. Mas os kernels para processadores modernos geralmente são configurados para muito mais jiffies por segundo.

    
por 13.10.2012 / 02:03