Usted realmente no puede medir la latencia "a través de" el sistema operativo debido a la sobrecarga de las colas y de la gestión de los procesos. Para ser "más precisa" sería necesario escribir un programa que se puede acceder directamente al núcleo, así que usted puede evaluar el tiempo real entre los eventos - el sonido y la pulsación de tecla.
Sin embargo, usted puede conseguir bastante de cerca en bash mediante el uso de la time
función. He creado la base de una secuencia de comandos bash que solicitará que el usuario presione Entrar después de esperar un pitido a ocurrir después de un azar período.
# generate a random number between 3 and 10 for seconds to wait for beep
t=$(( ( RANDOM % 10 ) + 3 ))
echo "When you hear the beep, press Enter!"
echo
echo
sleep $t
# beep the computer and get the time
time echo -ne '\007'
# wait for keypress and get the time
time read keypress
Te encontrarás con tres valores de tiempo dos veces. Ellos se definen como:
- Real - el tiempo de principio a fin de la llamada medir, si usted tenía un cronómetro en la mano. Esto representa para todos los procesos en ejecución en el tiempo.
- Usuario - este es el tiempo de permanencia en el espacio de usuario fuera del núcleo y es el tiempo de CPU dedicado a ejecutar la tarea
- Sys - este es el tiempo invertido en el interior del núcleo , y también es el tiempo real invertido por la CPU.
Para obtener más información sobre esto, vea Real, el Usuario Sys y el tiempo de proceso de las estadísticas.
Así, con el fin de precisión, Real es en el estadio de béisbol, el Usuario es bastante maldito cerca, y Sys es muerto por bolas precisa, tan lejos como la CPU se refiere.
Ejemplo De Salida:
When you hear the beep, press Enter!
real 0m0.000s
user 0m0.000s
sys 0m0.000s
real 0m0.812s
user 0m0.000s
sys 0m0.000s
En el ejemplo anterior muestra que la latencia de acuerdo con los ordenadores "cronómetro", no era una .812s diferencia entre cuando escuché el pitido y presiona Entrar. La resolución de la utilidad de tiempo no es granular suficiente para medir el tiempo transcurrido para ejecutar cada comando, así que suponemos que sucedió "inmediatamente".
Ejecutar de nuevo....
When you hear the beep, press Enter!
real 0m0.003s
user 0m0.001s
sys 0m0.002s
real 0m0.924s
user 0m0.001s
sys 0m0.002s
A partir de esto, podemos ver que hubo algún tipo de sobrecarga que provocó el proceso de cuentas por más tiempo. Si restamos la parte superior de los valores de la parte inferior, se puede llegar muy cerca de cuánto tiempo transcurrió.
Pero es preciso suficiente?
No. Esta es la razón por la que usted necesita un dispositivo llamado un Audiómetro que es construido como un pedazo de hardware que mide el tiempo entre los dos eventos - sonido y una pulsación de tecla. Es mucho más preciso porque se elimina la sobrecarga de la CPU de gestión y le da un verdadero precisa de tiempo transcurrido.