Наши партнеры

UnixForum

Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Диалог бабушки и внучки! Такое видео вызывает смех сквозь слезы…
Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Танец на выпускном взорвал сеть: смотреть без детей
Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Этот танец невесты оставит вас без слов! Пересмотрела 10 раз!
Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Женатым лучше не смотреть: танец роскошной Татьяны (видео)
Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Диалог бабушки и внучки! Такое видео вызывает смех сквозь слезы…


Библиотека сайта rus-linux.net

Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Это спасет потенцию даже в 70 лет! Продается в каждой аптеке...
Назад Сервер TCP/IP ... много серверов хороших и разных Вперед

Библиотека средств хронометража и диагностики

Поскольку нам нужна разрешающая способность (наносекундного диапазона) хронометража, намного превышающая разрешающую способность системного таймера Linux (миллисекундного диапазона), то для изменения таких временных интервалов используются измерения на основе счётчика тактов частоты процессора, прошедших с момента загрузки системы (команда RDTSC процессоров x86). Для осуществления таких измерений привлечена библиотека (в виде исходных кодов) из другого проекта, а все вызовы оформлены, в данном случае, как статическая библиотека libdiag.a, компонуемая с программой клиента. Детально с ней можно познакомиться в архиве проекта, а здесь мы покажем, в качестве основы, только два основных вызова:

  • считывание текущего значения счётчика тактов процессора:
    unsigned long long rdtsc( void ) { 
       unsigned long long int x; 
       asm volatile ( "rdtsc" : "=A" (x) ); 
       return x; 
    } 
  • вычисление частоты процессора, на котором выполняется вызов (для перевода безразмерного числа прошедших тактов в единицы измерения реального времени):
    uint64_t proc_hz( void ) { 
       time_t t1, t2; 
       uint64_t cf, cs; 
       time( &t1 ); 
       while( t1 == time( &t2 ) ) cf  = rdtsc(); 
       while( t2 == time( &t1 ) ) cs  = rdtsc(); 
       return (unsigned long)( cs - cf - calibr( 1000 ) ); 
    } 

Тактовая частота процессора (не путать с рабочей частотой процессора), даваемая функцией proc_hz(), могла бы быть определена в Linux и статически:

$ cat /proc/cpuinfo | grep 'model name' 
model name	: Genuine Intel(R) CPU           T2300  @ 1.66GHz 
model name	: Genuine Intel(R) CPU           T2300  @ 1.66GHz 

- это то значение (1.66*10E9), которое мы видим последним полем этой строки. Но мы предпочли динамически определять это значение (число тактов, насчитанное на протяжении секундного интервала).


Назад Сервер TCP/IP ... много серверов хороших и разных Вперед

Реклама
  • ИП Попов А.П.
  • ИНН: 602715631406
Диалог бабушки и внучки! Такое видео вызывает смех сквозь слезы…