From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <4200FB6E.7050902@altlinux.com> Date: Wed, 02 Feb 2005 19:10:22 +0300 From: Anton Farygin User-Agent: Mozilla Thunderbird 1.0 (X11/20050127) X-Accept-Language: en-us, en MIME-Version: 1.0 To: ALT Linux Sisyphus discussion list Subject: Re: [sisyphus] USB on 2.4.x References: <20050201221429.GA5775@abr.pp.ru> <200502021609.13283.serpiph@nikiet.ru> <4200D53F.7060509@altlinux.com> <200502021747.14473.serpiph@nikiet.ru> In-Reply-To: <200502021747.14473.serpiph@nikiet.ru> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ALT Linux Sisyphus discussion list List-Id: ALT Linux Sisyphus discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Feb 2005 16:14:30 -0000 Archived-At: List-Archive: Epiphanov Sergei wrote: >В сообщении от 2 Февраль 2005 16:27 Anton Farygin написал: > > >>Программу в студию ;-) >> >> > >Вот она (приложена). > > > >------------------------------------------------------------------------ > >#include >#include >#include >#include >#include >#include > >struct timeval getTV; >struct timezone getTZ; >double prevValue=0.0, curValue=0.0; > > >void sigHand( int i ){ > gettimeofday( &getTV, &getTZ ); > prevValue = curValue; > curValue = getTV.tv_sec+(double)getTV.tv_usec/1.0e6; >} > >int main( int argc, char ** argv ) { > > ::setpriority( PRIO_PROCESS, 0, -19 ); > struct sigaction sa; > memset( &sa, 0, sizeof(sa) ); > sa.sa_handler = sigHand; > sigaction( SIGALRM, &sa, NULL ); > > struct itimerval tv; > tv.it_interval.tv_sec = 0; > tv.it_interval.tv_usec = 30000; > tv.it_value.tv_sec = 0; > tv.it_value.tv_usec = 30000; > setitimer( ITIMER_REAL, &tv, NULL ); > > while( 1 ) { > pause(); >// printf("%10.3f\n",curValue); > printf("Cur=%16.6fs, Prev=%16.6fs, delta=%8.3fms\n",curValue,prevValue,(curValue-prevValue)*1.0e3); > } >} > > Вот результат для 2.2, 2.6 и 2.4 ядер ( я интервал увеличил до 300ms): 2.2: Cur=1107358666.289005s, Prev=1107358665.989036s, delta= 299.969ms Cur=1107358666.588971s, Prev=1107358666.289005s, delta= 299.966ms Cur=1107358666.888938s, Prev=1107358666.588971s, delta= 299.967ms Cur=1107358667.188906s, Prev=1107358666.888938s, delta= 299.968ms Cur=1107358667.488872s, Prev=1107358667.188906s, delta= 299.966ms Cur=1107358667.788839s, Prev=1107358667.488872s, delta= 299.967ms Cur=1107358668.088806s, Prev=1107358667.788839s, delta= 299.967ms 2.4.: Cur=1107358603.118778s, Prev=1107358602.818756s, delta= 300.022ms Cur=1107358603.418673s, Prev=1107358603.118778s, delta= 299.895ms Cur=1107358603.718774s, Prev=1107358603.418673s, delta= 300.101ms Cur=1107358604.018626s, Prev=1107358603.718774s, delta= 299.852ms Cur=1107358604.318607s, Prev=1107358604.018626s, delta= 299.981ms Cur=1107358604.618551s, Prev=1107358604.318607s, delta= 299.944ms Cur=1107358604.918511s, Prev=1107358604.618551s, delta= 299.960ms Cur=1107358605.218481s, Prev=1107358604.918511s, delta= 299.970ms 2.6.10: Cur=1107358798.689482s, Prev=1107358798.388537s, delta= 300.945ms Cur=1107358798.990423s, Prev=1107358798.689482s, delta= 300.941ms Cur=1107358799.291367s, Prev=1107358798.990423s, delta= 300.944ms Cur=1107358799.592312s, Prev=1107358799.291367s, delta= 300.945ms Cur=1107358799.893255s, Prev=1107358799.592312s, delta= 300.943ms Cur=1107358800.194198s, Prev=1107358799.893255s, delta= 300.943ms Cur=1107358800.495143s, Prev=1107358800.194198s, delta= 300.945ms Cur=1107358800.796087s, Prev=1107358800.495143s, delta= 300.944ms Cur=1107358801.097030s, Prev=1107358800.796087s, delta= 300.943ms Что интересно - разброс на 2.4 явно больше, но на 2.6 явно выше результат, но при этом точность намного выше. Так может быть что-то не так в методике тестирования ? При чем независимо от интервала превышение примерно 1ms. Кстати, google на эту тему нашел вот что: http://www.ussg.iu.edu/hypermail/linux/kernel/0408.3/0119.html Посмотрите, может быть у вас в коде подобная ошибка ? Rgds, Rider