GNU/Linux >> Znalost Linux >  >> Linux

Je clock_gettime() adekvátní pro submikrosekundové časování?

Ne. K tomu budete muset použít kód specifický pro platformu. Na x86 a x86-64 můžete použít 'rdtsc' ke čtení Time Stamp Counter.

Stačí portovat sestavu rdtsc, kterou používáte.

__inline__ uint64_t rdtsc(void) {
  uint32_t lo, hi;
  __asm__ __volatile__ (      // serialize
  "xorl %%eax,%%eax \n        cpuid"
  ::: "%rax", "%rbx", "%rcx", "%rdx");
  /* We cannot use "=A", since this would use %rax on x86_64 and return only the lower 32bits of the TSC */
  __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
  return (uint64_t)hi << 32 | lo;
}

Potřebuji časovač s vysokým rozlišením pro vestavěný profiler v linuxovém sestavení naší aplikace. Náš profiler měří rozsahy tak malé jako jednotlivé funkce, takže potřebuje přesnost časovače lepší než 25 nanosekund.

Zvažovali jste oprofile nebo perf ? Hardware čítače výkonu na vašem CPU můžete použít k získání profilovacích dat, aniž byste do samotného kódu přidávali instrumentaci. Můžete vidět data pro jednotlivé funkce nebo dokonce pro každý řádek kódu. „Jedinou“ nevýhodou je, že nebude měřit spotřebovaný čas nástěnných hodin, ale bude měřit spotřebovaný čas CPU, takže není vhodný pro všechna vyšetřování.


Linux
  1. Linux time Command Tutorial pro začátečníky (s příklady)

  2. 5 tipů, které vám pomohou připravit se na technické certifikační zkoušky

  3. Změřte čas v Linuxu - čas vs hodiny vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?

  1. Formát data a času pro skript nebo proměnnou prostředí Linux

  2. Měření uplynulého času v linuxu pro program c

  3. 'tail -f' po určitou dobu

  1. Potřebujete znát technologie pro mladší systémové správce

  2. Linux Sleep Command – zpoždění po určitou dobu

  3. Odhadnout čas nebo práci zbývající do dokončení pro Rsync?