Re: How to measure time accurately.
> For ppc this only gives 32-bit values, which overflow every 129 seconds on my > G5. Depending on how long you're trying to time, this could be a problem. Just take an extra measure to "record" overflows (2^32-1 => 0) and you're set. Jan Engelhardt -- No TOFU for me, please. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: How to measure time accurately.
Peter Chubb wrote: "Chris" == Chris Friesen <[EMAIL PROTECTED]> writes: Chris> Most cpus have some way of getting at a counter or decrementer Chris> of various frequencies. Usually it requires low-level hardware Chris> knowledge and often it needs assembly code. As a device driver is inside the linux kernel (unless you're writein a user-mode device driver :-)) you can use the getcycles() macro that's defined for most architectures. It provides a snapshot of the cycle-counter. For ppc this only gives 32-bit values, which overflow every 129 seconds on my G5. Depending on how long you're trying to time, this could be a problem. Chris - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: How to measure time accurately.
>>>>> "Chris" == Chris Friesen <[EMAIL PROTECTED]> writes: Chris> krishna wrote: >> Hi All, >> >> Can any one tell me how to measure time accurately for a block of C >> code in device drivers. For example, If I want to measure the time >> duration of firmware download. Chris> Most cpus have some way of getting at a counter or decrementer Chris> of various frequencies. Usually it requires low-level hardware Chris> knowledge and often it needs assembly code. As a device driver is inside the linux kernel (unless you're writein a user-mode device driver :-)) you can use the getcycles() macro that's defined for most architectures. It provides a snapshot of the cycle-counter. Caveats: 1. If you're running with power management, the cycle counter ticks at a variable rate. 2. If you're on a multiprocessor, the cycle counters of different processors need not be synchronised. -- Dr Peter Chubb http://www.gelato.unsw.edu.au peterc AT gelato.unsw.edu.au The technical we do immediately, the political takes *forever* - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: How to measure time accurately.
>In some cases you can simply count jiffies - depending on how accurate you >need to time things I'd say that often something like this is adequate : These "some cases" exclude this one: If interrupts are disabled, a jiffy might be missed. Take care. If you are on UP and want to measure within - a tick [when using preempt] - kernel space [no preempt] disabled interrupts should usually not be the case. Jan Engelhardt -- No TOFU for me, please. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: How to measure time accurately.
On Mon, 28 Mar 2005, Chris Friesen wrote: > Date: Mon, 28 Mar 2005 23:07:14 -0600 > From: Chris Friesen <[EMAIL PROTECTED]> > To: krishna <[EMAIL PROTECTED]> > Cc: Linux Kernel > Subject: Re: How to measure time accurately. > > krishna wrote: > > Hi All, > > > > Can any one tell me how to measure time accurately for a block of C code in > > device drivers. > > For example, If I want to measure the time duration of firmware download. > > Most cpus have some way of getting at a counter or decrementer of various > frequencies. Usually it requires low-level hardware knowledge and often it > needs assembly code. > > > On ppc you'd use the mftbu/mftbl instructions, as suggested by Lee on x86 > you'd use the rdtsc instruction. > In some cases you can simply count jiffies - depending on how accurate you need to time things I'd say that often something like this is adequate : unsigned long start, time_spent; start = jiffies; /* do stuff */ time_spent = jiffies - start; printk("stuff took %d jiffies (%d seconds)\n", time_spent, time_spent/HZ); -- Jesper Juhl - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: How to measure time accurately.
krishna wrote: Hi All, Can any one tell me how to measure time accurately for a block of C code in device drivers. For example, If I want to measure the time duration of firmware download. Most cpus have some way of getting at a counter or decrementer of various frequencies. Usually it requires low-level hardware knowledge and often it needs assembly code. On ppc you'd use the mftbu/mftbl instructions, as suggested by Lee on x86 you'd use the rdtsc instruction. Chris - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: How to measure time accurately.
On Mon, 2005-03-28 at 08:58 +0530, krishna wrote: > Hi All, > > Can any one tell me how to measure time accurately for a block of C code > in device drivers. > For example, If I want to measure the time duration of firmware download. rdtsc() - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
How to measure time accurately.
Hi All, Can any one tell me how to measure time accurately for a block of C code in device drivers. For example, If I want to measure the time duration of firmware download. Regards, Krishna Chaitanya - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/