Welcome! Log In Create A New Profile

Advanced

What do CAL interrupts do and is there a way to disable them?

Posted by radschapur 
What do CAL interrupts do and is there a way to disable them?
October 15, 2016 06:27AM
I am currently working on highly latency-sensitive software and I have a problem with interrupts. To make sure, processing is as fast as possible, I took the following steps:

I build the kernel, using the CONFIG_NO_HZ_FULL=y option
I isolated the CPU the software is running on using the isolcpus, nohz_full and rcu_nocbs boot parameters.
I set the CPU governor to "performance" to avoid issues with powersaving
I run the code on that CPU using taskset

This is the snipped I'm executing:

uint32_t *startTimes, *endTimes;
uint32_t sl, sh, el, eh;

startTimes = malloc(TESTLENGTH*sizeof(uint32_t));
endTimes = malloc(TESTLENGTH*sizeof(uint32_t));

for (i=0; i<TESTLENGTH; i++){

    __asm volatile
        ("rdtsc" : "=a" (sl), "=d" (sh));
    __asm volatile
        ("rdtsc" : "=a" (el), "=d" (eh));

    startTimes[ i ] = sl;
    endTimes[ i ] = el;
}


The value of endTimes[ i ] - startTimes[ i ] should be equivalent to the number of cycles necessary to read the TSC counter of that CPU and is usually about 18 cycles. However, occasionally, it's up to 10000 times that value.

The output of cat /proc/interrupts shows, that I get frequent interrupts of type CAL on the CPU I'm executing my code and I'm assuming that this is part of the problem.

So my question is, what are CAL interrupts and is there a way I can disable them, at least for a given CPU?
Author:

Your Email:


Subject:


Spam prevention:
Please, solve the mathematical question and enter the answer in the input field below. This is for blocking bots that try to post this form automatically.
Question: how much is 25 plus 13?
Message: