Google Groups Home
Help | Sign in
I doublt on timer interrput.
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  6 messages - Collapse all
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
liyu  
View profile
 More options Nov 7 2005, 1:06 am
Newsgroups: fa.linux.kernel
From: liyu <l...@ccoss.com.cn>
Date: Mon, 07 Nov 2005 06:06:25 UTC
Local: Mon, Nov 7 2005 1:06 am
Subject: [question] I doublt on timer interrput.
Hi, all:

    I have one question about timer interrupt (i386 architecture).

    As we known, the timer emit HZ times interrputs per second,
and in i386. The interrupt handler will call scheduler_tick()
each time (on i386 at least, both enable or disable APIC).

    On my Celeron machine(IOW, only one CPU, not SMP/SMT), I defined
a global int variable 'tick_count' in kernel/sched.c, and add one line
of code like follow in scheduler_tick():

    ++tick_count;

    but I found it is not same with content of the /proc/interrupts,
and the differennt between them is not little.

    I can not understand why that is.

    Any useful idea.

-liyu / NOW~

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Fawad Lateef  
View profile
 More options Nov 7 2005, 6:54 am
Newsgroups: fa.linux.kernel
From: Fawad Lateef <fawadlat...@gmail.com>
Date: Mon, 07 Nov 2005 11:54:19 UTC
Local: Mon, Nov 7 2005 6:54 am
Subject: Re: [question] I doublt on timer interrput.
On 11/7/05, liyu <l...@ccoss.com.cn> wrote:

What I found in the kernel code is that scheduler_tick is called from
two locations in the kernel (2.6.14-mm1) code (i386).

1) from kernel/timer.c in update_process_times which is called from
arch/i386/kernel/apic.c and its calling depends on the CONFIG_SMP
defined or not (see
http://sosdg.org/~coywolf/lxr/source/arch/i386/kernel/apic.c#L1160)
and as you don't have CONFIG_SMP enabled so its won't be called from
here.

2) from sched_fork function in kernel/sched.c
(http://sosdg.org/~coywolf/lxr/source/kernel/sched.c#L1414) and I
think its called when newly forked process setup is going to be
performed, and I think as from here scheduler_tick is called in your
case, so you are getting different value for your variable tick_count

scheduler_tick might be called from somewhere else which I am missing
so please CMIIW !

--
Fawad Lateef
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Robert Love  
View profile
 More options Nov 7 2005, 11:18 am
Newsgroups: fa.linux.kernel
From: Robert Love <r...@novell.com>
Date: Mon, 07 Nov 2005 16:18:28 UTC
Local: Mon, Nov 7 2005 11:18 am
Subject: Re: [question] I doublt on timer interrput.

scheduler_tick() is not the timer interrupt.

You want to hook into do_timer() or similar.

        Robert Love

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
liyu  
View profile
 More options Nov 7 2005, 8:33 pm
Newsgroups: fa.linux.kernel
From: liyu <l...@ccoss.com.cn>
Date: Tue, 08 Nov 2005 01:33:15 UTC
Local: Mon, Nov 7 2005 8:33 pm
Subject: Re: [question] I doublt on timer interrput.
Fawad Lateef Wrote:

Please see this URL:

http://lxr.linux.no/source/include/asm-i386/mach-default/do_timer.h#L20

static inline void do_timer_interrupt_hook(struct pt_regs *regs)
{
        do_timer(regs);
#ifndef CONFIG_SMP
        update_process_times(user_mode(regs));
#endif
/*
 * In the SMP case we use the local APIC timer interrupt to do the
 * profiling, except when we simulate SMP mode on a uniprocessor
 * system, in that case we have to call the local interrupt handler.
 */
#ifndef CONFIG_X86_LOCAL_APIC
        profile_tick(CPU_PROFILING, regs);
#else
        if (!using_apic_timer)
                smp_local_timer_interrupt(regs);
#endif

}

That is the code in 2.6.12, but 2.6.13.3 also same with it at least.
So we call scheduler_tick() HZ times per second, both enable
SMP or disable it.

Nod, I agree with your words, the scheduler_tick() do not same with
timer interrupt handler on call times. but I guess it should be more
than jiffies, beacause of other functions also can call it (for example,
as Lateef said, sched_fork().)

I think that

scheduler_tick() might be called from somewhere

is not exact.

We may note, it do not be EXPORT_SYMBOL_*()ed , so it only can be called
from kernel core,
not kernel modules. Such a few places we can find it use LXR or grep.

I use setup one sysctl integer variable to watch the value of 'count_tick',
Do this way have any problem? I found some value skips, but I think it is
normal case.

However, I will make a experiemnt that write one hook like do_timer(),
as Love said

PS: if our scheduler_tick() is not called every timer interrput, the
compute of task timeslice
also is not exact ?!

Thanks a lot.

-liyu

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Fawad Lateef  
View profile
 More options Nov 7 2005, 9:54 pm
Newsgroups: fa.linux.kernel
From: Fawad Lateef <fawadlat...@gmail.com>
Date: Tue, 08 Nov 2005 02:54:10 UTC
Local: Mon, Nov 7 2005 9:54 pm
Subject: Re: [question] I doublt on timer interrput.
On 11/8/05, liyu <l...@ccoss.com.cn> wrote:

Yes, this is the thing which I missed

> Nod, I agree with your words, the scheduler_tick() do not same with
> timer interrupt handler on call times. but I guess it should be more
> than jiffies, beacause of other functions also can call it (for example,
> as Lateef said, sched_fork().)

> I think that

> scheduler_tick() might be called from somewhere

> is not exact.

> We may note, it do not be EXPORT_SYMBOL_*()ed , so it only can be called
> from kernel core,
> not kernel modules. Such a few places we can find it use LXR or grep.

By saying __might_be_called_from_somewhere__ I meant that I am missing
some-other place __with-in_the_kernel_code__ from where it is called,
which you pointed to me (about do_timer.h)   :)

> I use setup one sysctl integer variable to watch the value of 'count_tick',
> Do this way have any problem? I found some value skips, but I think it is
> normal case.

If you are declaring count_tick as a global variable (without static)
in sched.c then you can just use it in your test module by specifying
extern for your variable

> However, I will make a experiemnt that write one hook like do_timer(),
> as Love said

> PS: if our scheduler_tick() is not called every timer interrput, the
> compute of task timeslice
> also is not exact ?!

Yes, I am now sure that it will be called for every timer interrupt ! :)

Thanks,

--
Fawad Lateef
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
liyu  
View profile
 More options Nov 7 2005, 10:05 pm
Newsgroups: fa.linux.kernel
From: liyu <l...@ccoss.com.cn>
Date: Tue, 08 Nov 2005 03:05:26 UTC
Local: Mon, Nov 7 2005 10:05 pm
Subject: Re: [question] I doublt on timer interrput.

I get it !

I am sorry to spend your time so much, all trouble are came from one my
low-level fault.

I put "++count_tick" in scheduler_tick(), but that function() can return
before it!

This is one sample result:

We can see:

157491 > 157390 !

Yeah, I got it.

Thanks a lot again.

-liyu

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2008 Google