M
Mark Seger
I'd posted a note on HiRes earlier but things seem to be getting more
complicated. Here are the facts as I understand them:
- versions of HiRes older than 1.91 call setitimer with the entire time
interval as usecs even if > 1sec. This is clearly in violation of the
calling interface to setitimer, but with glibc versions <2.4 it still
works correctly as I've been successfully using this for over 5 years.
- with glibc 2.4, you get random results if the time >4 seconds
- with glibc 2.5, you get failures but is seems only during boot! I
know this sounds odd, but I tried running a test that did alarms > 1
second as an inet.d script and watched the console. I got errors while
the system was booting and once it finished, the error messages stopped.
If the answer were simply to install the right version of HiRes that
wouldn't be so bad but it looks like a lot of current distros still ship
an older version of HiRes and we are talking a lot of permutations. I
just submitted a bugzilla against rhel5.2 and they're going to try to
get it addresses in 5.3 but I have no idea where else this is a problem.
Now for my problem - I have an open source performance monitoring tool
called collectl if anyone cares - that uses HiRes. If HiRes is present
I use high resolution timers and if not there I just do sleeps.
I'm now starting to get bug reports against systems with glibc 2.5 on
them and what I plan to do with my next release if check the versions of
HiRes and glibc and if they're incompatible point the user to cpan and
tell them to install a newer version of HiRes. Seemed to work great
until I tried to install a new version of HiRes. When I did my 'make
install', it told me:
[root@cag-dl585-01 Time-HiRes-1.9715]# make install
Files found in blib/arch: installing files in blib/lib into architecture
dependent library tree
Writing
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/auto/Time/HiRes/.packlist
Appending installation info to
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/perllocal.pod
and I discovered I now have both the old and new version of HiRes
installed. But what really makes this awful when I try to use HiRes
perl loads the older one. Clearly it's a library search path issue but
given this can run on any distro I can't make any assumptions about
where the module actually gets installed.
I'm not sure what the best solution to this is. Is there an easy way to
remove the older version? Ultimately I want to be able to tell users of
my tool how to get HiRes properly installed and they may not even be
perl users or developers so the solution needs to be very simple.
any helpful suggestions will be greatly appreciated.
-mark
complicated. Here are the facts as I understand them:
- versions of HiRes older than 1.91 call setitimer with the entire time
interval as usecs even if > 1sec. This is clearly in violation of the
calling interface to setitimer, but with glibc versions <2.4 it still
works correctly as I've been successfully using this for over 5 years.
- with glibc 2.4, you get random results if the time >4 seconds
- with glibc 2.5, you get failures but is seems only during boot! I
know this sounds odd, but I tried running a test that did alarms > 1
second as an inet.d script and watched the console. I got errors while
the system was booting and once it finished, the error messages stopped.
If the answer were simply to install the right version of HiRes that
wouldn't be so bad but it looks like a lot of current distros still ship
an older version of HiRes and we are talking a lot of permutations. I
just submitted a bugzilla against rhel5.2 and they're going to try to
get it addresses in 5.3 but I have no idea where else this is a problem.
Now for my problem - I have an open source performance monitoring tool
called collectl if anyone cares - that uses HiRes. If HiRes is present
I use high resolution timers and if not there I just do sleeps.
I'm now starting to get bug reports against systems with glibc 2.5 on
them and what I plan to do with my next release if check the versions of
HiRes and glibc and if they're incompatible point the user to cpan and
tell them to install a newer version of HiRes. Seemed to work great
until I tried to install a new version of HiRes. When I did my 'make
install', it told me:
[root@cag-dl585-01 Time-HiRes-1.9715]# make install
Files found in blib/arch: installing files in blib/lib into architecture
dependent library tree
Writing
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/auto/Time/HiRes/.packlist
Appending installation info to
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/perllocal.pod
and I discovered I now have both the old and new version of HiRes
installed. But what really makes this awful when I try to use HiRes
perl loads the older one. Clearly it's a library search path issue but
given this can run on any distro I can't make any assumptions about
where the module actually gets installed.
I'm not sure what the best solution to this is. Is there an easy way to
remove the older version? Ultimately I want to be able to tell users of
my tool how to get HiRes properly installed and they may not even be
perl users or developers so the solution needs to be very simple.
any helpful suggestions will be greatly appreciated.
-mark