Comment mesurer la latence d'un mutex, d'un sémaphore ou d'un futex? Je veux dire la latence entre deux événements: débloquer mutex précédemment verrouillé et le verrouillage de ce mutex. Il y a deux cas: lorsque tous les threads/processus sont sur le même CPU (combien de temps faut-il pour replanifier le thread) et quand le premier thread est sur le premier CPU et le second sur le second.Mesure de la latence de mutex ou de futex
Thread1: Lock(Mutex) Critical1 Unlock(Mutex)|<------->|
Thread2: while{trylock} |Lock(Mutex) Critical2 Unlock(Mutex)|
Ou encore
Thread1: work..work..very hard..work... sem_post()|<----->|
Thread2: sem_wait(semaphore)...............................|sem_wait unlocks here work2..
Ce temps est très court (~ 1 k cycles), donc je ne peux pas utiliser gettimeofday()
ou est-ce que je peux utiliser directement un compteur d'horloge CPU (RDTSC)? – osgx