* sched /HT processor [not found] <bpH71yEXU00000397@hotmail.com> @ 2005-04-03 0:37 ` Arun Srinivas 2005-04-03 1:17 ` Steven Rostedt 0 siblings, 1 reply; 14+ messages in thread From: Arun Srinivas @ 2005-04-03 0:37 UTC (permalink / raw) To: linux-kernel HI I have pentium4 hyperthreaded processor.I am using kernel 2.6.5 and i rebuilt my kernel with CONFIG_SMP enabled (in this kernel source there is nothing such as CONFIG_SMT...i noticed this only in recent 2.6.11). 1) So, after I rebulit it with CONFIG_SMP enabled does linux recogonize my machine as hyperthreaded or as 2 seperate processor? Also, if it does not recogonize it as hyperthreaded(but only as 2 seperate CPU's), does the scheduler schedule instruction in the 2 cpu's independently? (does it maintain 2 seperate runqueues? 2) If it has indeed recogonized this as hyperthreaded processor...does the scheduler use a common runqueue for the 2 logical processor? (please read below) ********************************************************************************************************* (I am attaching the ouput of 'dmesg' (command) on my machine) ************************************************************************************************************* Apr 2 17:43:12 kulick2 kernel: Linux version 2.6.5-1.358custom (root@kulick2) (gcc version 3.3 .3 20040412 (Red Hat Linux 3.3.3-7)) #133 SMP Wed Mar 30 12:16:27 CST 2005 Apr 2 17:43:12 kulick2 kernel: BIOS-provided physical RAM map: Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 0000000000000000 - 00000000000a0000 (usable) Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 0000000000100000 - 000000001f770000 (usable) Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f770000 - 000000001f772000 (ACPI NVS) Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f772000 - 000000001f793000 (ACPI data) Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f793000 - 000000001f800000 (reserved) Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fecf0000 - 00000000fecf1000 (reserved) Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fed20000 - 00000000fed90000 (reserved) Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fee00000 - 00000000fee10000 (reserved) Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000ffb00000 - 0000000100000000 (reserved) Apr 2 17:43:12 kulick2 kernel: 0MB HIGHMEM available. Apr 2 17:43:12 kulick2 kernel: 503MB LOWMEM available. Apr 2 17:43:12 kulick2 kernel: ACPI: S3 and PAE do not like each other for now, S3 disabled. Apr 2 17:43:12 kulick2 kernel: found SMP MP-table at 000fe710 Apr 2 17:43:12 kulick2 kernel: On node 0 totalpages: 128880 Apr 2 17:43:12 kulick2 kernel: DMA zone: 4096 pages, LIFO batch:1 Apr 2 17:43:12 kulick2 kernel: Normal zone: 124784 pages, LIFO batch:16 Apr 2 17:43:12 kulick2 kernel: HighMem zone: 0 pages, LIFO batch:1 Apr 2 17:43:12 kulick2 kernel: DMI 2.3 present. Apr 2 17:43:12 kulick2 kernel: Using APIC driver default Apr 2 17:43:12 kulick2 kernel: ACPI: RSDP (v000 DELL ) @ 0x000feba0 Apr 2 17:43:12 kulick2 kernel: ACPI: RSDT (v001 DELL GX270 0x00000007 ASL 0x00000061) @ 0x000fd192 Apr 2 17:43:12 kulick2 kernel: ACPI: FADT (v001 DELL GX270 0x00000007 ASL 0x00000061) @ 0x000fd1ca Apr 2 17:43:12 kulick2 kernel: ACPI: SSDT (v001 DELL st_ex 0x00001000 MSFT 0x0100000d) @ 0xfffd4eee Apr 2 17:43:12 kulick2 irqbalance: irqbalance startup succeeded Apr 2 17:43:12 kulick2 kernel: ACPI: MADT (v001 DELL GX270 0x00000007 ASL 0x00000061) @ 0x000fd23e Apr 2 17:43:12 kulick2 kernel: ACPI: BOOT (v001 DELL GX270 0x00000007 ASL 0x00000061) @ 0x000fd2aa Apr 2 17:43:12 kulick2 kernel: ACPI: ASF! (v016 DELL GX270 0x00000007 ASL 0x00000061) @ 0x000fd2d2 Apr 2 17:43:12 kulick2 kernel: ACPI: DSDT (v001 DELL dt_ex 0x00001000 MSFT 0x0100000d) @ 0x00000000 Apr 2 17:43:12 kulick2 kernel: ACPI: PM-Timer IO Port: 0x808 Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) Apr 2 17:43:12 kulick2 kernel: Processor #0 15:2 APIC version 20 Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled) Apr 2 17:43:12 kulick2 kernel: Processor #1 15:2 APIC version 20 Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x03] lapic_id[0x01] disabled) Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x04] lapic_id[0x03] disabled) Apr 2 17:43:12 kulick2 kernel: ACPI: IOAPIC (id[0x02] address[0xfec00000] global_irq_base[0x0] ) Apr 2 17:43:12 kulick2 kernel: IOAPIC[0]: Assigned apic_id 2 Apr 2 17:43:12 kulick2 kernel: IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23 Apr 2 17:43:12 kulick2 kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) Apr 2 17:43:12 kulick2 kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) Apr 2 17:43:12 kulick2 kernel: Enabling APIC mode: Flat. Using 1 I/O APICs Apr 2 17:43:12 kulick2 kernel: Using ACPI (MADT) for SMP configuration information Apr 2 17:43:12 kulick2 portmap: portmap startup succeeded Apr 2 17:43:12 kulick2 kernel: Built 1 zonelists Apr 2 17:43:12 kulick2 kernel: Kernel command line: ro root=LABEL=/ rhgb quiet Apr 2 17:43:12 kulick2 kernel: mapped 4G/4G trampoline to fffeb000. Apr 2 17:43:12 kulick2 kernel: Initializing CPU#0 Apr 2 17:43:12 kulick2 kernel: CPU 0 irqstacks, hard=023cb000 soft=023ab000 Apr 2 17:43:12 kulick2 kernel: PID hash table entries: 2048 (order 11: 16384 bytes) Apr 2 17:43:12 kulick2 kernel: Detected 2993.225 MHz processor. Apr 2 17:43:12 kulick2 kernel: Using pmtmr for high-res timesource Apr 2 17:43:12 kulick2 kernel: Console: colour VGA+ 80x25 Apr 2 17:43:12 kulick2 kernel: Memory: 505996k/515520k available (1744k kernel code, 8772k res erved, 756k data, 180k init, 0k highmem) Apr 2 17:43:12 kulick2 kernel: Calibrating delay loop... 5931.00 BogoMIPS Apr 2 17:43:12 kulick2 kernel: Security Scaffold v1.0.0 initialized Apr 2 17:43:12 kulick2 kernel: SELinux: Initializing. Apr 2 17:43:12 kulick2 kernel: SELinux: Starting in permissive mode Apr 2 17:43:12 kulick2 kernel: There is already a security framework initialized, register_sec urity failed. Apr 2 17:43:12 kulick2 kernel: Failure registering capabilities with the kernel Apr 2 17:43:12 kulick2 kernel: selinux_register_security: Registering secondary module capabi lity Apr 2 17:43:12 kulick2 kernel: Capability LSM initialized Apr 2 17:43:12 kulick2 kernel: Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Apr 2 17:43:12 kulick2 kernel: Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Apr 2 17:43:12 kulick2 kernel: Mount-cache hash table entries: 512 (order: 0, 4096 bytes) Apr 2 17:43:12 kulick2 kernel: CPU: Trace cache: 12K uops, L1 D cache: 8K Apr 2 17:43:12 kulick2 rpc.statd[2019]: Version 1.0.6 Starting Apr 2 17:43:12 kulick2 kernel: CPU: L2 cache: 512K Apr 2 17:43:12 kulick2 kernel: CPU: Physical Processor ID: 0 Apr 2 17:43:12 kulick2 rpc.statd[2019]: gethostbyname error for kulick2 Apr 2 17:43:12 kulick2 kernel: Intel machine check architecture supported. Apr 2 17:43:12 kulick2 kernel: Intel machine check reporting enabled on CPU#0. Apr 2 17:43:12 kulick2 nfslock: rpc.statd startup succeeded Apr 2 17:43:12 kulick2 kernel: CPU#0: Intel P4/Xeon Extended MCE MSRs (12) available Apr 2 17:43:12 kulick2 kernel: CPU#0: Thermal monitoring enabled Apr 2 17:43:12 kulick2 kernel: Enabling fast FPU save and restore... done. Apr 2 17:43:12 kulick2 kernel: Enabling unmasked SIMD FPU exception support... done. Apr 2 17:43:12 kulick2 kernel: Checking 'hlt' instruction... OK. Apr 2 17:43:12 kulick2 kernel: POSIX conformance testing by UNIFIX Apr 2 17:43:12 kulick2 kernel: CPU0: Intel(R) Pentium(R) 4 CPU 3.00GHz stepping 09 Apr 2 17:43:12 kulick2 kernel: per-CPU timeslice cutoff: 1462.93 usecs. Apr 2 17:43:12 kulick2 kernel: task migration cache decay timeout: 2 msecs. Apr 2 17:43:12 kulick2 kernel: enabled ExtINT on CPU#0 Apr 2 17:43:12 kulick2 kernel: ESR value before enabling vector: 00000040 Apr 2 17:43:12 kulick2 kernel: ESR value after enabling vector: 00000000 Apr 2 17:43:12 kulick2 kernel: Booting processor 1/1 eip 2000 Apr 2 17:43:12 kulick2 kernel: CPU 1 irqstacks, hard=023cc000 soft=023ac000 Apr 2 17:43:12 kulick2 kernel: Initializing CPU#1 Apr 2 17:43:12 kulick2 kernel: masked ExtINT on CPU#1 Apr 2 17:43:12 kulick2 kernel: ESR value before enabling vector: 00000000 Apr 2 17:43:12 kulick2 kernel: ESR value after enabling vector: 00000000 Apr 2 17:43:12 kulick2 kernel: Calibrating delay loop... 5980.16 BogoMIPS Apr 2 17:43:12 kulick2 kernel: CPU: Trace cache: 12K uops, L1 D cache: 8K Apr 2 17:43:12 kulick2 kernel: CPU: L2 cache: 512K Apr 2 17:43:12 kulick2 kernel: CPU: Physical Processor ID: 0 Apr 2 17:43:12 kulick2 kernel: Intel machine check architecture supported. Apr 2 17:43:12 kulick2 kernel: Intel machine check reporting enabled on CPU#1. Apr 2 17:43:12 kulick2 kernel: CPU#1: Intel P4/Xeon Extended MCE MSRs (12) available Apr 2 17:43:12 kulick2 kernel: CPU#1: Thermal monitoring enabled Apr 2 17:43:12 kulick2 kernel: CPU1: Intel(R) Pentium(R) 4 CPU 3.00GHz stepping 09 Apr 2 17:43:12 kulick2 kernel: Total of 2 processors activated (11911.16 BogoMIPS). Apr 2 17:43:12 kulick2 kernel: cpu_sibling_map[0] = 1 Apr 2 17:43:12 kulick2 kernel: cpu_sibling_map[1] = 0 >From: postmaster@mail.hotmail.com >To: getarunsri@hotmail.com >Subject: Delivery Status Notification (Failure) >Date: Sat, 2 Apr 2005 16:01:39 -0800 > >This is an automatically generated Delivery Status Notification. > >Delivery to the following recipients failed. > > linux-kernel@vger.kernel.org > > > ><< attach3 >> ><< message4.txt >> _________________________________________________________________ Expressions unlimited! http://server1.msn.co.in/sp04/messenger/ The all new MSN Messenger! ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: sched /HT processor 2005-04-03 0:37 ` sched /HT processor Arun Srinivas @ 2005-04-03 1:17 ` Steven Rostedt 2005-04-03 2:16 ` Arun Srinivas 2005-04-03 7:52 ` Arun Srinivas 0 siblings, 2 replies; 14+ messages in thread From: Steven Rostedt @ 2005-04-03 1:17 UTC (permalink / raw) To: Arun Srinivas; +Cc: LKML On Sun, 2005-04-03 at 06:07 +0530, Arun Srinivas wrote: > HI > > I have pentium4 hyperthreaded processor.I am using kernel 2.6.5 and i > rebuilt my kernel with CONFIG_SMP enabled (in this kernel source there is > nothing such as CONFIG_SMT...i noticed this only in recent 2.6.11). > I don't have a 2.6.5 available, but I do have a 2.6.9 to look at. > 1) So, after I rebulit it with CONFIG_SMP enabled does linux recogonize my > machine as hyperthreaded or as 2 seperate processor? Also, if it does not > recogonize it as hyperthreaded(but only as 2 seperate CPU's), does the > scheduler schedule instruction in the 2 cpu's independently? (does it > maintain 2 seperate runqueues? > I believe even HT on 2.6.11 maintains two different runqueues. But it doesn't care so much to jump from one runqueue to the next if it is HT. > 2) If it has indeed recogonized this as hyperthreaded processor...does the > scheduler use a common runqueue for the 2 logical processor? > No, you wouldn't want to. > (please read below) What do you want us to see? > ********************************************************************************************************* > (I am attaching the ouput of 'dmesg' (command) on my machine) > ************************************************************************************************************* > Apr 2 17:43:12 kulick2 kernel: Linux version 2.6.5-1.358custom > (root@kulick2) (gcc version 3.3 > .3 20040412 (Red Hat Linux 3.3.3-7)) #133 SMP Wed Mar 30 12:16:27 CST 2005 > Apr 2 17:43:12 kulick2 kernel: BIOS-provided physical RAM map: > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 0000000000000000 - > 00000000000a0000 (usable) > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000000f0000 - > 0000000000100000 (reserved) > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 0000000000100000 - > 000000001f770000 (usable) > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f770000 - > 000000001f772000 (ACPI NVS) > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f772000 - > 000000001f793000 (ACPI data) > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f793000 - > 000000001f800000 (reserved) > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fec00000 - > 00000000fec10000 (reserved) > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fecf0000 - > 00000000fecf1000 (reserved) > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fed20000 - > 00000000fed90000 (reserved) > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fee00000 - > 00000000fee10000 (reserved) > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000ffb00000 - > 0000000100000000 (reserved) > Apr 2 17:43:12 kulick2 kernel: 0MB HIGHMEM available. > Apr 2 17:43:12 kulick2 kernel: 503MB LOWMEM available. > Apr 2 17:43:12 kulick2 kernel: ACPI: S3 and PAE do not like each other for > now, S3 disabled. > Apr 2 17:43:12 kulick2 kernel: found SMP MP-table at 000fe710 > Apr 2 17:43:12 kulick2 kernel: On node 0 totalpages: 128880 > Apr 2 17:43:12 kulick2 kernel: DMA zone: 4096 pages, LIFO batch:1 > Apr 2 17:43:12 kulick2 kernel: Normal zone: 124784 pages, LIFO batch:16 > Apr 2 17:43:12 kulick2 kernel: HighMem zone: 0 pages, LIFO batch:1 > Apr 2 17:43:12 kulick2 kernel: DMI 2.3 present. > Apr 2 17:43:12 kulick2 kernel: Using APIC driver default > Apr 2 17:43:12 kulick2 kernel: ACPI: RSDP (v000 DELL > ) @ > 0x000feba0 > Apr 2 17:43:12 kulick2 kernel: ACPI: RSDT (v001 DELL GX270 0x00000007 > ASL 0x00000061) @ > 0x000fd192 > Apr 2 17:43:12 kulick2 kernel: ACPI: FADT (v001 DELL GX270 0x00000007 > ASL 0x00000061) @ > 0x000fd1ca > Apr 2 17:43:12 kulick2 kernel: ACPI: SSDT (v001 DELL st_ex 0x00001000 > MSFT 0x0100000d) @ > 0xfffd4eee > Apr 2 17:43:12 kulick2 irqbalance: irqbalance startup succeeded > Apr 2 17:43:12 kulick2 kernel: ACPI: MADT (v001 DELL GX270 0x00000007 > ASL 0x00000061) @ > 0x000fd23e > Apr 2 17:43:12 kulick2 kernel: ACPI: BOOT (v001 DELL GX270 0x00000007 > ASL 0x00000061) @ > 0x000fd2aa > Apr 2 17:43:12 kulick2 kernel: ACPI: ASF! (v016 DELL GX270 0x00000007 > ASL 0x00000061) @ > 0x000fd2d2 > Apr 2 17:43:12 kulick2 kernel: ACPI: DSDT (v001 DELL dt_ex 0x00001000 > MSFT 0x0100000d) @ > 0x00000000 > Apr 2 17:43:12 kulick2 kernel: ACPI: PM-Timer IO Port: 0x808 > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] > enabled) > Apr 2 17:43:12 kulick2 kernel: Processor #0 15:2 APIC version 20 > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] > enabled) > Apr 2 17:43:12 kulick2 kernel: Processor #1 15:2 APIC version 20 > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x03] lapic_id[0x01] > disabled) > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x04] lapic_id[0x03] > disabled) > Apr 2 17:43:12 kulick2 kernel: ACPI: IOAPIC (id[0x02] address[0xfec00000] > global_irq_base[0x0] > ) > Apr 2 17:43:12 kulick2 kernel: IOAPIC[0]: Assigned apic_id 2 > Apr 2 17:43:12 kulick2 kernel: IOAPIC[0]: apic_id 2, version 32, address > 0xfec00000, GSI 0-23 > Apr 2 17:43:12 kulick2 kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 0 > global_irq 2 dfl dfl) > Apr 2 17:43:12 kulick2 kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 9 > global_irq 9 high level) > Apr 2 17:43:12 kulick2 kernel: Enabling APIC mode: Flat. Using 1 I/O > APICs > Apr 2 17:43:12 kulick2 kernel: Using ACPI (MADT) for SMP configuration > information > Apr 2 17:43:12 kulick2 portmap: portmap startup succeeded > Apr 2 17:43:12 kulick2 kernel: Built 1 zonelists > Apr 2 17:43:12 kulick2 kernel: Kernel command line: ro root=LABEL=/ rhgb > quiet > Apr 2 17:43:12 kulick2 kernel: mapped 4G/4G trampoline to fffeb000. > Apr 2 17:43:12 kulick2 kernel: Initializing CPU#0 > Apr 2 17:43:12 kulick2 kernel: CPU 0 irqstacks, hard=023cb000 soft=023ab000 > Apr 2 17:43:12 kulick2 kernel: PID hash table entries: 2048 (order 11: > 16384 bytes) > Apr 2 17:43:12 kulick2 kernel: Detected 2993.225 MHz processor. > Apr 2 17:43:12 kulick2 kernel: Using pmtmr for high-res timesource > Apr 2 17:43:12 kulick2 kernel: Console: colour VGA+ 80x25 > Apr 2 17:43:12 kulick2 kernel: Memory: 505996k/515520k available (1744k > kernel code, 8772k res > erved, 756k data, 180k init, 0k highmem) > Apr 2 17:43:12 kulick2 kernel: Calibrating delay loop... 5931.00 BogoMIPS > Apr 2 17:43:12 kulick2 kernel: Security Scaffold v1.0.0 initialized > Apr 2 17:43:12 kulick2 kernel: SELinux: Initializing. > Apr 2 17:43:12 kulick2 kernel: SELinux: Starting in permissive mode > Apr 2 17:43:12 kulick2 kernel: There is already a security framework > initialized, register_sec > urity failed. > Apr 2 17:43:12 kulick2 kernel: Failure registering capabilities with the > kernel > Apr 2 17:43:12 kulick2 kernel: selinux_register_security: Registering > secondary module capabi > lity > Apr 2 17:43:12 kulick2 kernel: Capability LSM initialized > Apr 2 17:43:12 kulick2 kernel: Dentry cache hash table entries: 32768 > (order: 5, 131072 bytes) > Apr 2 17:43:12 kulick2 kernel: Inode-cache hash table entries: 32768 > (order: 5, 131072 bytes) > Apr 2 17:43:12 kulick2 kernel: Mount-cache hash table entries: 512 (order: > 0, 4096 bytes) > Apr 2 17:43:12 kulick2 kernel: CPU: Trace cache: 12K uops, L1 D cache: 8K > Apr 2 17:43:12 kulick2 rpc.statd[2019]: Version 1.0.6 Starting > Apr 2 17:43:12 kulick2 kernel: CPU: L2 cache: 512K > Apr 2 17:43:12 kulick2 kernel: CPU: Physical Processor ID: 0 > Apr 2 17:43:12 kulick2 rpc.statd[2019]: gethostbyname error for kulick2 > Apr 2 17:43:12 kulick2 kernel: Intel machine check architecture supported. > Apr 2 17:43:12 kulick2 kernel: Intel machine check reporting enabled on > CPU#0. > Apr 2 17:43:12 kulick2 nfslock: rpc.statd startup succeeded > Apr 2 17:43:12 kulick2 kernel: CPU#0: Intel P4/Xeon Extended MCE MSRs (12) > available > Apr 2 17:43:12 kulick2 kernel: CPU#0: Thermal monitoring enabled > Apr 2 17:43:12 kulick2 kernel: Enabling fast FPU save and restore... done. > Apr 2 17:43:12 kulick2 kernel: Enabling unmasked SIMD FPU exception > support... done. > Apr 2 17:43:12 kulick2 kernel: Checking 'hlt' instruction... OK. > Apr 2 17:43:12 kulick2 kernel: POSIX conformance testing by UNIFIX > Apr 2 17:43:12 kulick2 kernel: CPU0: Intel(R) Pentium(R) 4 CPU 3.00GHz > stepping 09 > Apr 2 17:43:12 kulick2 kernel: per-CPU timeslice cutoff: 1462.93 usecs. > Apr 2 17:43:12 kulick2 kernel: task migration cache decay timeout: 2 msecs. > Apr 2 17:43:12 kulick2 kernel: enabled ExtINT on CPU#0 > Apr 2 17:43:12 kulick2 kernel: ESR value before enabling vector: 00000040 > Apr 2 17:43:12 kulick2 kernel: ESR value after enabling vector: 00000000 > Apr 2 17:43:12 kulick2 kernel: Booting processor 1/1 eip 2000 > Apr 2 17:43:12 kulick2 kernel: CPU 1 irqstacks, hard=023cc000 soft=023ac000 > Apr 2 17:43:12 kulick2 kernel: Initializing CPU#1 > Apr 2 17:43:12 kulick2 kernel: masked ExtINT on CPU#1 > Apr 2 17:43:12 kulick2 kernel: ESR value before enabling vector: 00000000 > Apr 2 17:43:12 kulick2 kernel: ESR value after enabling vector: 00000000 > Apr 2 17:43:12 kulick2 kernel: Calibrating delay loop... 5980.16 BogoMIPS > Apr 2 17:43:12 kulick2 kernel: CPU: Trace cache: 12K uops, L1 D cache: 8K > Apr 2 17:43:12 kulick2 kernel: CPU: L2 cache: 512K > Apr 2 17:43:12 kulick2 kernel: CPU: Physical Processor ID: 0 > Apr 2 17:43:12 kulick2 kernel: Intel machine check architecture supported. > Apr 2 17:43:12 kulick2 kernel: Intel machine check reporting enabled on > CPU#1. > Apr 2 17:43:12 kulick2 kernel: CPU#1: Intel P4/Xeon Extended MCE MSRs (12) > available > Apr 2 17:43:12 kulick2 kernel: CPU#1: Thermal monitoring enabled > Apr 2 17:43:12 kulick2 kernel: CPU1: Intel(R) Pentium(R) 4 CPU 3.00GHz > stepping 09 > Apr 2 17:43:12 kulick2 kernel: Total of 2 processors activated (11911.16 > BogoMIPS). > Apr 2 17:43:12 kulick2 kernel: cpu_sibling_map[0] = 1 > Apr 2 17:43:12 kulick2 kernel: cpu_sibling_map[1] = 0 Here you see that you have two CPUs. 0 is the sibling of 1 and 1 to 0. This just shows that you have HT. If you were to have a dual xeon, then you would see 4 CPUs and two pairs. -- Steve ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: sched /HT processor 2005-04-03 1:17 ` Steven Rostedt @ 2005-04-03 2:16 ` Arun Srinivas 2005-04-03 4:22 ` Steven Rostedt 2005-04-03 7:52 ` Arun Srinivas 1 sibling, 1 reply; 14+ messages in thread From: Arun Srinivas @ 2005-04-03 2:16 UTC (permalink / raw) To: rostedt; +Cc: linux-kernel I attached the 'dmesg' output because there it shows that my kernel recogonized 2 cpu's.As said earlier , are they treated as 2 physical cpu's or logical cpu's? >From: Steven Rostedt <rostedt@goodmis.org> >To: Arun Srinivas <getarunsri@hotmail.com> >CC: LKML <linux-kernel@vger.kernel.org> >Subject: Re: sched /HT processor >Date: Sat, 02 Apr 2005 20:17:54 -0500 > >On Sun, 2005-04-03 at 06:07 +0530, Arun Srinivas wrote: > > HI > > > > I have pentium4 hyperthreaded processor.I am using kernel 2.6.5 and i > > rebuilt my kernel with CONFIG_SMP enabled (in this kernel source there >is > > nothing such as CONFIG_SMT...i noticed this only in recent 2.6.11). > > > >I don't have a 2.6.5 available, but I do have a 2.6.9 to look at. > > > 1) So, after I rebulit it with CONFIG_SMP enabled does linux recogonize >my > > machine as hyperthreaded or as 2 seperate processor? Also, if it does >not > > recogonize it as hyperthreaded(but only as 2 seperate CPU's), does the > > scheduler schedule instruction in the 2 cpu's independently? (does it > > maintain 2 seperate runqueues? > > > >I believe even HT on 2.6.11 maintains two different runqueues. But it >doesn't care so much to jump from one runqueue to the next if it is HT. > > > 2) If it has indeed recogonized this as hyperthreaded processor...does >the > > scheduler use a common runqueue for the 2 logical processor? > > > >No, you wouldn't want to. > > > > (please read below) > >What do you want us to see? > > > >********************************************************************************************************* > > (I am attaching the ouput of 'dmesg' (command) on my machine) > > >************************************************************************************************************* > > Apr 2 17:43:12 kulick2 kernel: Linux version 2.6.5-1.358custom > > (root@kulick2) (gcc version 3.3 > > .3 20040412 (Red Hat Linux 3.3.3-7)) #133 SMP Wed Mar 30 12:16:27 CST >2005 > > Apr 2 17:43:12 kulick2 kernel: BIOS-provided physical RAM map: > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 0000000000000000 - > > 00000000000a0000 (usable) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000000f0000 - > > 0000000000100000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 0000000000100000 - > > 000000001f770000 (usable) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f770000 - > > 000000001f772000 (ACPI NVS) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f772000 - > > 000000001f793000 (ACPI data) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f793000 - > > 000000001f800000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fec00000 - > > 00000000fec10000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fecf0000 - > > 00000000fecf1000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fed20000 - > > 00000000fed90000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fee00000 - > > 00000000fee10000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000ffb00000 - > > 0000000100000000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: 0MB HIGHMEM available. > > Apr 2 17:43:12 kulick2 kernel: 503MB LOWMEM available. > > Apr 2 17:43:12 kulick2 kernel: ACPI: S3 and PAE do not like each other >for > > now, S3 disabled. > > Apr 2 17:43:12 kulick2 kernel: found SMP MP-table at 000fe710 > > Apr 2 17:43:12 kulick2 kernel: On node 0 totalpages: 128880 > > Apr 2 17:43:12 kulick2 kernel: DMA zone: 4096 pages, LIFO batch:1 > > Apr 2 17:43:12 kulick2 kernel: Normal zone: 124784 pages, LIFO >batch:16 > > Apr 2 17:43:12 kulick2 kernel: HighMem zone: 0 pages, LIFO batch:1 > > Apr 2 17:43:12 kulick2 kernel: DMI 2.3 present. > > Apr 2 17:43:12 kulick2 kernel: Using APIC driver default > > Apr 2 17:43:12 kulick2 kernel: ACPI: RSDP (v000 DELL > > ) @ > > 0x000feba0 > > Apr 2 17:43:12 kulick2 kernel: ACPI: RSDT (v001 DELL GX270 >0x00000007 > > ASL 0x00000061) @ > > 0x000fd192 > > Apr 2 17:43:12 kulick2 kernel: ACPI: FADT (v001 DELL GX270 >0x00000007 > > ASL 0x00000061) @ > > 0x000fd1ca > > Apr 2 17:43:12 kulick2 kernel: ACPI: SSDT (v001 DELL st_ex >0x00001000 > > MSFT 0x0100000d) @ > > 0xfffd4eee > > Apr 2 17:43:12 kulick2 irqbalance: irqbalance startup succeeded > > Apr 2 17:43:12 kulick2 kernel: ACPI: MADT (v001 DELL GX270 >0x00000007 > > ASL 0x00000061) @ > > 0x000fd23e > > Apr 2 17:43:12 kulick2 kernel: ACPI: BOOT (v001 DELL GX270 >0x00000007 > > ASL 0x00000061) @ > > 0x000fd2aa > > Apr 2 17:43:12 kulick2 kernel: ACPI: ASF! (v016 DELL GX270 >0x00000007 > > ASL 0x00000061) @ > > 0x000fd2d2 > > Apr 2 17:43:12 kulick2 kernel: ACPI: DSDT (v001 DELL dt_ex >0x00001000 > > MSFT 0x0100000d) @ > > 0x00000000 > > Apr 2 17:43:12 kulick2 kernel: ACPI: PM-Timer IO Port: 0x808 > > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x01] >lapic_id[0x00] > > enabled) > > Apr 2 17:43:12 kulick2 kernel: Processor #0 15:2 APIC version 20 > > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x02] >lapic_id[0x01] > > enabled) > > Apr 2 17:43:12 kulick2 kernel: Processor #1 15:2 APIC version 20 > > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x03] >lapic_id[0x01] > > disabled) > > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x04] >lapic_id[0x03] > > disabled) > > Apr 2 17:43:12 kulick2 kernel: ACPI: IOAPIC (id[0x02] >address[0xfec00000] > > global_irq_base[0x0] > > ) > > Apr 2 17:43:12 kulick2 kernel: IOAPIC[0]: Assigned apic_id 2 > > Apr 2 17:43:12 kulick2 kernel: IOAPIC[0]: apic_id 2, version 32, >address > > 0xfec00000, GSI 0-23 > > Apr 2 17:43:12 kulick2 kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 0 > > global_irq 2 dfl dfl) > > Apr 2 17:43:12 kulick2 kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 9 > > global_irq 9 high level) > > Apr 2 17:43:12 kulick2 kernel: Enabling APIC mode: Flat. Using 1 I/O > > APICs > > Apr 2 17:43:12 kulick2 kernel: Using ACPI (MADT) for SMP configuration > > information > > Apr 2 17:43:12 kulick2 portmap: portmap startup succeeded > > Apr 2 17:43:12 kulick2 kernel: Built 1 zonelists > > Apr 2 17:43:12 kulick2 kernel: Kernel command line: ro root=LABEL=/ >rhgb > > quiet > > Apr 2 17:43:12 kulick2 kernel: mapped 4G/4G trampoline to fffeb000. > > Apr 2 17:43:12 kulick2 kernel: Initializing CPU#0 > > Apr 2 17:43:12 kulick2 kernel: CPU 0 irqstacks, hard=023cb000 >soft=023ab000 > > Apr 2 17:43:12 kulick2 kernel: PID hash table entries: 2048 (order 11: > > 16384 bytes) > > Apr 2 17:43:12 kulick2 kernel: Detected 2993.225 MHz processor. > > Apr 2 17:43:12 kulick2 kernel: Using pmtmr for high-res timesource > > Apr 2 17:43:12 kulick2 kernel: Console: colour VGA+ 80x25 > > Apr 2 17:43:12 kulick2 kernel: Memory: 505996k/515520k available (1744k > > kernel code, 8772k res > > erved, 756k data, 180k init, 0k highmem) > > Apr 2 17:43:12 kulick2 kernel: Calibrating delay loop... 5931.00 >BogoMIPS > > Apr 2 17:43:12 kulick2 kernel: Security Scaffold v1.0.0 initialized > > Apr 2 17:43:12 kulick2 kernel: SELinux: Initializing. > > Apr 2 17:43:12 kulick2 kernel: SELinux: Starting in permissive mode > > Apr 2 17:43:12 kulick2 kernel: There is already a security framework > > initialized, register_sec > > urity failed. > > Apr 2 17:43:12 kulick2 kernel: Failure registering capabilities with >the > > kernel > > Apr 2 17:43:12 kulick2 kernel: selinux_register_security: Registering > > secondary module capabi > > lity > > Apr 2 17:43:12 kulick2 kernel: Capability LSM initialized > > Apr 2 17:43:12 kulick2 kernel: Dentry cache hash table entries: 32768 > > (order: 5, 131072 bytes) > > Apr 2 17:43:12 kulick2 kernel: Inode-cache hash table entries: 32768 > > (order: 5, 131072 bytes) > > Apr 2 17:43:12 kulick2 kernel: Mount-cache hash table entries: 512 >(order: > > 0, 4096 bytes) > > Apr 2 17:43:12 kulick2 kernel: CPU: Trace cache: 12K uops, L1 D cache: >8K > > Apr 2 17:43:12 kulick2 rpc.statd[2019]: Version 1.0.6 Starting > > Apr 2 17:43:12 kulick2 kernel: CPU: L2 cache: 512K > > Apr 2 17:43:12 kulick2 kernel: CPU: Physical Processor ID: 0 > > Apr 2 17:43:12 kulick2 rpc.statd[2019]: gethostbyname error for kulick2 > > Apr 2 17:43:12 kulick2 kernel: Intel machine check architecture >supported. > > Apr 2 17:43:12 kulick2 kernel: Intel machine check reporting enabled on > > CPU#0. > > Apr 2 17:43:12 kulick2 nfslock: rpc.statd startup succeeded > > Apr 2 17:43:12 kulick2 kernel: CPU#0: Intel P4/Xeon Extended MCE MSRs >(12) > > available > > Apr 2 17:43:12 kulick2 kernel: CPU#0: Thermal monitoring enabled > > Apr 2 17:43:12 kulick2 kernel: Enabling fast FPU save and restore... >done. > > Apr 2 17:43:12 kulick2 kernel: Enabling unmasked SIMD FPU exception > > support... done. > > Apr 2 17:43:12 kulick2 kernel: Checking 'hlt' instruction... OK. > > Apr 2 17:43:12 kulick2 kernel: POSIX conformance testing by UNIFIX > > Apr 2 17:43:12 kulick2 kernel: CPU0: Intel(R) Pentium(R) 4 CPU 3.00GHz > > stepping 09 > > Apr 2 17:43:12 kulick2 kernel: per-CPU timeslice cutoff: 1462.93 usecs. > > Apr 2 17:43:12 kulick2 kernel: task migration cache decay timeout: 2 >msecs. > > Apr 2 17:43:12 kulick2 kernel: enabled ExtINT on CPU#0 > > Apr 2 17:43:12 kulick2 kernel: ESR value before enabling vector: >00000040 > > Apr 2 17:43:12 kulick2 kernel: ESR value after enabling vector: >00000000 > > Apr 2 17:43:12 kulick2 kernel: Booting processor 1/1 eip 2000 > > Apr 2 17:43:12 kulick2 kernel: CPU 1 irqstacks, hard=023cc000 >soft=023ac000 > > Apr 2 17:43:12 kulick2 kernel: Initializing CPU#1 > > Apr 2 17:43:12 kulick2 kernel: masked ExtINT on CPU#1 > > Apr 2 17:43:12 kulick2 kernel: ESR value before enabling vector: >00000000 > > Apr 2 17:43:12 kulick2 kernel: ESR value after enabling vector: >00000000 > > Apr 2 17:43:12 kulick2 kernel: Calibrating delay loop... 5980.16 >BogoMIPS > > Apr 2 17:43:12 kulick2 kernel: CPU: Trace cache: 12K uops, L1 D cache: >8K > > Apr 2 17:43:12 kulick2 kernel: CPU: L2 cache: 512K > > Apr 2 17:43:12 kulick2 kernel: CPU: Physical Processor ID: 0 > > Apr 2 17:43:12 kulick2 kernel: Intel machine check architecture >supported. > > Apr 2 17:43:12 kulick2 kernel: Intel machine check reporting enabled on > > CPU#1. > > Apr 2 17:43:12 kulick2 kernel: CPU#1: Intel P4/Xeon Extended MCE MSRs >(12) > > available > > Apr 2 17:43:12 kulick2 kernel: CPU#1: Thermal monitoring enabled > > Apr 2 17:43:12 kulick2 kernel: CPU1: Intel(R) Pentium(R) 4 CPU 3.00GHz > > stepping 09 > > Apr 2 17:43:12 kulick2 kernel: Total of 2 processors activated >(11911.16 > > BogoMIPS). > > Apr 2 17:43:12 kulick2 kernel: cpu_sibling_map[0] = 1 > > Apr 2 17:43:12 kulick2 kernel: cpu_sibling_map[1] = 0 > >Here you see that you have two CPUs. 0 is the sibling of 1 and 1 to 0. >This just shows that you have HT. If you were to have a dual xeon, then >you would see 4 CPUs and two pairs. > >-- Steve > _________________________________________________________________ Make money with Zero Investment. http://adfarm.mediaplex.com/ad/ck/4686-26272-10936-31?ck=RegSell Start your business. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: sched /HT processor 2005-04-03 2:16 ` Arun Srinivas @ 2005-04-03 4:22 ` Steven Rostedt 0 siblings, 0 replies; 14+ messages in thread From: Steven Rostedt @ 2005-04-03 4:22 UTC (permalink / raw) To: Arun Srinivas; +Cc: LKML On Sun, 2005-04-03 at 07:46 +0530, Arun Srinivas wrote: > I attached the 'dmesg' output because there it shows that my kernel > recogonized 2 cpu's.As said earlier , are they treated as 2 physical cpu's > or logical cpu's? > As I said, they are logical [snip] > > > available > > > Apr 2 17:43:12 kulick2 kernel: CPU#1: Thermal monitoring enabled > > > Apr 2 17:43:12 kulick2 kernel: CPU1: Intel(R) Pentium(R) 4 CPU 3.00GHz > > > stepping 09 > > > Apr 2 17:43:12 kulick2 kernel: Total of 2 processors activated > >(11911.16 > > > BogoMIPS). > > > Apr 2 17:43:12 kulick2 kernel: cpu_sibling_map[0] = 1 > > > Apr 2 17:43:12 kulick2 kernel: cpu_sibling_map[1] = 0 > > > >Here you see that you have two CPUs. 0 is the sibling of 1 and 1 to 0. > >This just shows that you have HT. If you were to have a dual xeon, then > >you would see 4 CPUs and two pairs. > > > >-- Steve > > > I'll elaborate more. This says that you have a single CPU with hyperthreading. That's what the siblings mean. That they share a single physical CPU. -- Steve ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: sched /HT processor 2005-04-03 1:17 ` Steven Rostedt 2005-04-03 2:16 ` Arun Srinivas @ 2005-04-03 7:52 ` Arun Srinivas 2005-04-03 11:17 ` Jesper Juhl 1 sibling, 1 reply; 14+ messages in thread From: Arun Srinivas @ 2005-04-03 7:52 UTC (permalink / raw) To: rostedt; +Cc: linux-kernel I looked at my "include/asm-i386/param.h" and the HZ value is 1000.So, I suppose the timer interrupt frequency is 1000 times per sec. or once every 1 millisec. So, is scheduler_tick() ( for resceduling) called only once every 1 ms?? I am measuring the time when 2 of my processes are scheduled in a HT processor.So, the possible timedifference of when my 2 processes are scheduled can be only the following: 1) 0 (if both of my processes are scheduled @ the same time since its a HT) 2) 1ms ( this is the min. possible time diff. 3) some value greater than 1 ms Is the above argument correct? Thanks >From: Steven Rostedt <rostedt@goodmis.org> >To: Arun Srinivas <getarunsri@hotmail.com> >CC: LKML <linux-kernel@vger.kernel.org> >Subject: Re: sched /HT processor >Date: Sat, 02 Apr 2005 20:17:54 -0500 > >On Sun, 2005-04-03 at 06:07 +0530, Arun Srinivas wrote: > > HI > > > > I have pentium4 hyperthreaded processor.I am using kernel 2.6.5 and i > > rebuilt my kernel with CONFIG_SMP enabled (in this kernel source there >is > > nothing such as CONFIG_SMT...i noticed this only in recent 2.6.11). > > > >I don't have a 2.6.5 available, but I do have a 2.6.9 to look at. > > > 1) So, after I rebulit it with CONFIG_SMP enabled does linux recogonize >my > > machine as hyperthreaded or as 2 seperate processor? Also, if it does >not > > recogonize it as hyperthreaded(but only as 2 seperate CPU's), does the > > scheduler schedule instruction in the 2 cpu's independently? (does it > > maintain 2 seperate runqueues? > > > >I believe even HT on 2.6.11 maintains two different runqueues. But it >doesn't care so much to jump from one runqueue to the next if it is HT. > > > 2) If it has indeed recogonized this as hyperthreaded processor...does >the > > scheduler use a common runqueue for the 2 logical processor? > > > >No, you wouldn't want to. > > > > (please read below) > >What do you want us to see? > > > >********************************************************************************************************* > > (I am attaching the ouput of 'dmesg' (command) on my machine) > > >************************************************************************************************************* > > Apr 2 17:43:12 kulick2 kernel: Linux version 2.6.5-1.358custom > > (root@kulick2) (gcc version 3.3 > > .3 20040412 (Red Hat Linux 3.3.3-7)) #133 SMP Wed Mar 30 12:16:27 CST >2005 > > Apr 2 17:43:12 kulick2 kernel: BIOS-provided physical RAM map: > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 0000000000000000 - > > 00000000000a0000 (usable) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000000f0000 - > > 0000000000100000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 0000000000100000 - > > 000000001f770000 (usable) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f770000 - > > 000000001f772000 (ACPI NVS) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f772000 - > > 000000001f793000 (ACPI data) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 000000001f793000 - > > 000000001f800000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fec00000 - > > 00000000fec10000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fecf0000 - > > 00000000fecf1000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fed20000 - > > 00000000fed90000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000fee00000 - > > 00000000fee10000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: BIOS-e820: 00000000ffb00000 - > > 0000000100000000 (reserved) > > Apr 2 17:43:12 kulick2 kernel: 0MB HIGHMEM available. > > Apr 2 17:43:12 kulick2 kernel: 503MB LOWMEM available. > > Apr 2 17:43:12 kulick2 kernel: ACPI: S3 and PAE do not like each other >for > > now, S3 disabled. > > Apr 2 17:43:12 kulick2 kernel: found SMP MP-table at 000fe710 > > Apr 2 17:43:12 kulick2 kernel: On node 0 totalpages: 128880 > > Apr 2 17:43:12 kulick2 kernel: DMA zone: 4096 pages, LIFO batch:1 > > Apr 2 17:43:12 kulick2 kernel: Normal zone: 124784 pages, LIFO >batch:16 > > Apr 2 17:43:12 kulick2 kernel: HighMem zone: 0 pages, LIFO batch:1 > > Apr 2 17:43:12 kulick2 kernel: DMI 2.3 present. > > Apr 2 17:43:12 kulick2 kernel: Using APIC driver default > > Apr 2 17:43:12 kulick2 kernel: ACPI: RSDP (v000 DELL > > ) @ > > 0x000feba0 > > Apr 2 17:43:12 kulick2 kernel: ACPI: RSDT (v001 DELL GX270 >0x00000007 > > ASL 0x00000061) @ > > 0x000fd192 > > Apr 2 17:43:12 kulick2 kernel: ACPI: FADT (v001 DELL GX270 >0x00000007 > > ASL 0x00000061) @ > > 0x000fd1ca > > Apr 2 17:43:12 kulick2 kernel: ACPI: SSDT (v001 DELL st_ex >0x00001000 > > MSFT 0x0100000d) @ > > 0xfffd4eee > > Apr 2 17:43:12 kulick2 irqbalance: irqbalance startup succeeded > > Apr 2 17:43:12 kulick2 kernel: ACPI: MADT (v001 DELL GX270 >0x00000007 > > ASL 0x00000061) @ > > 0x000fd23e > > Apr 2 17:43:12 kulick2 kernel: ACPI: BOOT (v001 DELL GX270 >0x00000007 > > ASL 0x00000061) @ > > 0x000fd2aa > > Apr 2 17:43:12 kulick2 kernel: ACPI: ASF! (v016 DELL GX270 >0x00000007 > > ASL 0x00000061) @ > > 0x000fd2d2 > > Apr 2 17:43:12 kulick2 kernel: ACPI: DSDT (v001 DELL dt_ex >0x00001000 > > MSFT 0x0100000d) @ > > 0x00000000 > > Apr 2 17:43:12 kulick2 kernel: ACPI: PM-Timer IO Port: 0x808 > > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x01] >lapic_id[0x00] > > enabled) > > Apr 2 17:43:12 kulick2 kernel: Processor #0 15:2 APIC version 20 > > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x02] >lapic_id[0x01] > > enabled) > > Apr 2 17:43:12 kulick2 kernel: Processor #1 15:2 APIC version 20 > > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x03] >lapic_id[0x01] > > disabled) > > Apr 2 17:43:12 kulick2 kernel: ACPI: LAPIC (acpi_id[0x04] >lapic_id[0x03] > > disabled) > > Apr 2 17:43:12 kulick2 kernel: ACPI: IOAPIC (id[0x02] >address[0xfec00000] > > global_irq_base[0x0] > > ) > > Apr 2 17:43:12 kulick2 kernel: IOAPIC[0]: Assigned apic_id 2 > > Apr 2 17:43:12 kulick2 kernel: IOAPIC[0]: apic_id 2, version 32, >address > > 0xfec00000, GSI 0-23 > > Apr 2 17:43:12 kulick2 kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 0 > > global_irq 2 dfl dfl) > > Apr 2 17:43:12 kulick2 kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 9 > > global_irq 9 high level) > > Apr 2 17:43:12 kulick2 kernel: Enabling APIC mode: Flat. Using 1 I/O > > APICs > > Apr 2 17:43:12 kulick2 kernel: Using ACPI (MADT) for SMP configuration > > information > > Apr 2 17:43:12 kulick2 portmap: portmap startup succeeded > > Apr 2 17:43:12 kulick2 kernel: Built 1 zonelists > > Apr 2 17:43:12 kulick2 kernel: Kernel command line: ro root=LABEL=/ >rhgb > > quiet > > Apr 2 17:43:12 kulick2 kernel: mapped 4G/4G trampoline to fffeb000. > > Apr 2 17:43:12 kulick2 kernel: Initializing CPU#0 > > Apr 2 17:43:12 kulick2 kernel: CPU 0 irqstacks, hard=023cb000 >soft=023ab000 > > Apr 2 17:43:12 kulick2 kernel: PID hash table entries: 2048 (order 11: > > 16384 bytes) > > Apr 2 17:43:12 kulick2 kernel: Detected 2993.225 MHz processor. > > Apr 2 17:43:12 kulick2 kernel: Using pmtmr for high-res timesource > > Apr 2 17:43:12 kulick2 kernel: Console: colour VGA+ 80x25 > > Apr 2 17:43:12 kulick2 kernel: Memory: 505996k/515520k available (1744k > > kernel code, 8772k res > > erved, 756k data, 180k init, 0k highmem) > > Apr 2 17:43:12 kulick2 kernel: Calibrating delay loop... 5931.00 >BogoMIPS > > Apr 2 17:43:12 kulick2 kernel: Security Scaffold v1.0.0 initialized > > Apr 2 17:43:12 kulick2 kernel: SELinux: Initializing. > > Apr 2 17:43:12 kulick2 kernel: SELinux: Starting in permissive mode > > Apr 2 17:43:12 kulick2 kernel: There is already a security framework > > initialized, register_sec > > urity failed. > > Apr 2 17:43:12 kulick2 kernel: Failure registering capabilities with >the > > kernel > > Apr 2 17:43:12 kulick2 kernel: selinux_register_security: Registering > > secondary module capabi > > lity > > Apr 2 17:43:12 kulick2 kernel: Capability LSM initialized > > Apr 2 17:43:12 kulick2 kernel: Dentry cache hash table entries: 32768 > > (order: 5, 131072 bytes) > > Apr 2 17:43:12 kulick2 kernel: Inode-cache hash table entries: 32768 > > (order: 5, 131072 bytes) > > Apr 2 17:43:12 kulick2 kernel: Mount-cache hash table entries: 512 >(order: > > 0, 4096 bytes) > > Apr 2 17:43:12 kulick2 kernel: CPU: Trace cache: 12K uops, L1 D cache: >8K > > Apr 2 17:43:12 kulick2 rpc.statd[2019]: Version 1.0.6 Starting > > Apr 2 17:43:12 kulick2 kernel: CPU: L2 cache: 512K > > Apr 2 17:43:12 kulick2 kernel: CPU: Physical Processor ID: 0 > > Apr 2 17:43:12 kulick2 rpc.statd[2019]: gethostbyname error for kulick2 > > Apr 2 17:43:12 kulick2 kernel: Intel machine check architecture >supported. > > Apr 2 17:43:12 kulick2 kernel: Intel machine check reporting enabled on > > CPU#0. > > Apr 2 17:43:12 kulick2 nfslock: rpc.statd startup succeeded > > Apr 2 17:43:12 kulick2 kernel: CPU#0: Intel P4/Xeon Extended MCE MSRs >(12) > > available > > Apr 2 17:43:12 kulick2 kernel: CPU#0: Thermal monitoring enabled > > Apr 2 17:43:12 kulick2 kernel: Enabling fast FPU save and restore... >done. > > Apr 2 17:43:12 kulick2 kernel: Enabling unmasked SIMD FPU exception > > support... done. > > Apr 2 17:43:12 kulick2 kernel: Checking 'hlt' instruction... OK. > > Apr 2 17:43:12 kulick2 kernel: POSIX conformance testing by UNIFIX > > Apr 2 17:43:12 kulick2 kernel: CPU0: Intel(R) Pentium(R) 4 CPU 3.00GHz > > stepping 09 > > Apr 2 17:43:12 kulick2 kernel: per-CPU timeslice cutoff: 1462.93 usecs. > > Apr 2 17:43:12 kulick2 kernel: task migration cache decay timeout: 2 >msecs. > > Apr 2 17:43:12 kulick2 kernel: enabled ExtINT on CPU#0 > > Apr 2 17:43:12 kulick2 kernel: ESR value before enabling vector: >00000040 > > Apr 2 17:43:12 kulick2 kernel: ESR value after enabling vector: >00000000 > > Apr 2 17:43:12 kulick2 kernel: Booting processor 1/1 eip 2000 > > Apr 2 17:43:12 kulick2 kernel: CPU 1 irqstacks, hard=023cc000 >soft=023ac000 > > Apr 2 17:43:12 kulick2 kernel: Initializing CPU#1 > > Apr 2 17:43:12 kulick2 kernel: masked ExtINT on CPU#1 > > Apr 2 17:43:12 kulick2 kernel: ESR value before enabling vector: >00000000 > > Apr 2 17:43:12 kulick2 kernel: ESR value after enabling vector: >00000000 > > Apr 2 17:43:12 kulick2 kernel: Calibrating delay loop... 5980.16 >BogoMIPS > > Apr 2 17:43:12 kulick2 kernel: CPU: Trace cache: 12K uops, L1 D cache: >8K > > Apr 2 17:43:12 kulick2 kernel: CPU: L2 cache: 512K > > Apr 2 17:43:12 kulick2 kernel: CPU: Physical Processor ID: 0 > > Apr 2 17:43:12 kulick2 kernel: Intel machine check architecture >supported. > > Apr 2 17:43:12 kulick2 kernel: Intel machine check reporting enabled on > > CPU#1. > > Apr 2 17:43:12 kulick2 kernel: CPU#1: Intel P4/Xeon Extended MCE MSRs >(12) > > available > > Apr 2 17:43:12 kulick2 kernel: CPU#1: Thermal monitoring enabled > > Apr 2 17:43:12 kulick2 kernel: CPU1: Intel(R) Pentium(R) 4 CPU 3.00GHz > > stepping 09 > > Apr 2 17:43:12 kulick2 kernel: Total of 2 processors activated >(11911.16 > > BogoMIPS). > > Apr 2 17:43:12 kulick2 kernel: cpu_sibling_map[0] = 1 > > Apr 2 17:43:12 kulick2 kernel: cpu_sibling_map[1] = 0 > >Here you see that you have two CPUs. 0 is the sibling of 1 and 1 to 0. >This just shows that you have HT. If you were to have a dual xeon, then >you would see 4 CPUs and two pairs. > >-- Steve > _________________________________________________________________ News, views and gossip. http://www.msn.co.in/Cinema/ Get it all at MSN Cinema! ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: sched /HT processor 2005-04-03 7:52 ` Arun Srinivas @ 2005-04-03 11:17 ` Jesper Juhl 2005-04-03 15:31 ` Steven Rostedt 0 siblings, 1 reply; 14+ messages in thread From: Jesper Juhl @ 2005-04-03 11:17 UTC (permalink / raw) To: Arun Srinivas; +Cc: rostedt, linux-kernel On Sun, 3 Apr 2005, Arun Srinivas wrote: > > I looked at my "include/asm-i386/param.h" and the HZ value is 1000.So, I > suppose the timer interrupt frequency is 1000 times per sec. or once every 1 > millisec. > > So, is scheduler_tick() ( for resceduling) called only once every 1 ms?? I am > measuring the time when 2 of my processes are scheduled in a HT processor.So, > the possible timedifference of when my 2 processes are scheduled can be only > the following: > > 1) 0 (if both of my processes are scheduled @ the same time since its a HT) > 2) 1ms ( this is the min. possible time diff. > 3) some value greater than 1 ms > Is the above argument correct? A reschedule can happen once every ms, but also upon returning to userspace and when returning from an interrupt handler, and also when something in the kernel explicitly calls schedule() or sleeps (which in turn results in a call to schedule()). And each CPU runs schedule() independently. At least that's my understanding of it - if I'm wrong I hope someone on the list will correct me. -- Jesper Juhl ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: sched /HT processor 2005-04-03 11:17 ` Jesper Juhl @ 2005-04-03 15:31 ` Steven Rostedt 2005-04-03 22:52 ` Arun Srinivas 2005-04-03 22:52 ` sched /HT processor Arun Srinivas 0 siblings, 2 replies; 14+ messages in thread From: Steven Rostedt @ 2005-04-03 15:31 UTC (permalink / raw) To: Jesper Juhl; +Cc: Arun Srinivas, LKML On Sun, 2005-04-03 at 13:17 +0200, Jesper Juhl wrote: > > A reschedule can happen once every ms, but also upon returning to > userspace and when returning from an interrupt handler, and also when > something in the kernel explicitly calls schedule() or sleeps (which in > turn results in a call to schedule()). And each CPU runs schedule() > independently. > At least that's my understanding of it - if I'm wrong I hope someone on > the list will correct me. You're correct, but I'll add some more details here. The actual schedule happens when needed. A schedule may not take place at every ms, if the task running is not done with its time slice and no events happened where another task should preempt it. If an RT task is running in a FIFO policy, then it will continue to run until it calls schedule itself or another process of higher priority preempts it. Now if you don't have PREEMPT turned on, than the schedule won't take place at all while a task is in the kernel, unless the task explicitly calls schedule. What happens on a timer interrupt where a task is done with its time slice or another event where a schedule should take place, is just the need_resched flag is set for the task. On return from the interrupt the flag is checked, and if set a schedule is called. This is still a pretty basic description of what really happens, and if you want to learn more, just start searching the kernel code for schedule and need_resched. Don't forget to look in the asm code (ie entry.S, and dependent on your arch other *.S files). -- Steve ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: sched /HT processor 2005-04-03 15:31 ` Steven Rostedt @ 2005-04-03 22:52 ` Arun Srinivas 2005-04-03 23:08 ` Steven Rostedt 2005-04-03 22:52 ` sched /HT processor Arun Srinivas 1 sibling, 1 reply; 14+ messages in thread From: Arun Srinivas @ 2005-04-03 22:52 UTC (permalink / raw) To: rostedt, juhl-lkml; +Cc: linux-kernel Thanks. yes, a reschedule may not take place after a ms, if the currently running task cannot be preempted by another task. (1) But, can a reschedule happen within a millisec (or once a process is scheduled can schedule() be called before the next millisec.) ? 2) Also in case argument (1) is not true, and I want rescheduling to be done (i.e., schedule() called) in less than 1 ms , can I directly change the HZ value in <asm-i386/param.h> and recompile my kernel so that my timer interrupt will occur frequently? Thanks Arun >From: Steven Rostedt <rostedt@goodmis.org> >To: Jesper Juhl <juhl-lkml@dif.dk> >CC: Arun Srinivas <getarunsri@hotmail.com>, LKML ><linux-kernel@vger.kernel.org> >Subject: Re: sched /HT processor >Date: Sun, 03 Apr 2005 11:31:03 -0400 > >On Sun, 2005-04-03 at 13:17 +0200, Jesper Juhl wrote: > > > > A reschedule can happen once every ms, but also upon returning to > > userspace and when returning from an interrupt handler, and also when > > something in the kernel explicitly calls schedule() or sleeps (which in > > turn results in a call to schedule()). And each CPU runs schedule() > > independently. > > At least that's my understanding of it - if I'm wrong I hope someone on > > the list will correct me. > >You're correct, but I'll add some more details here. The actual >schedule happens when needed. A schedule may not take place at every >ms, if the task running is not done with its time slice and no events >happened where another task should preempt it. If an RT task is running >in a FIFO policy, then it will continue to run until it calls schedule >itself or another process of higher priority preempts it. > >Now if you don't have PREEMPT turned on, than the schedule won't take >place at all while a task is in the kernel, unless the task explicitly >calls schedule. > >What happens on a timer interrupt where a task is done with its time >slice or another event where a schedule should take place, is just the >need_resched flag is set for the task. On return from the interrupt the >flag is checked, and if set a schedule is called. > >This is still a pretty basic description of what really happens, and if >you want to learn more, just start searching the kernel code for >schedule and need_resched. Don't forget to look in the asm code (ie >entry.S, and dependent on your arch other *.S files). > >-- Steve > > _________________________________________________________________ The MSN Survey! http://www.cross-tab.com/surveys/run/test.asp?sid=2026&respid=1 Help us help you better! ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: sched /HT processor 2005-04-03 22:52 ` Arun Srinivas @ 2005-04-03 23:08 ` Steven Rostedt 2005-04-04 23:06 ` scheduler/SCHED_FIFO behaviour Arun Srinivas 0 siblings, 1 reply; 14+ messages in thread From: Steven Rostedt @ 2005-04-03 23:08 UTC (permalink / raw) To: Arun Srinivas; +Cc: juhl-lkml, LKML On Mon, 2005-04-04 at 04:22 +0530, Arun Srinivas wrote: > Thanks. yes, a reschedule may not take place after a ms, if the currently > running task cannot be preempted by another task. > > (1) But, can a reschedule happen within a millisec (or once a process is > scheduled can schedule() be called before the next millisec.) ? > Yes. For example: a high priority task may be waiting for some IO to come in. Right after the normal timer interrupt scheduled another task, the IO may come in and wake the high priority process up. This process will preempt the other task right away. (ie. less than 1 ms). > 2) Also in case argument (1) is not true, and I want rescheduling to be done > (i.e., schedule() called) in less than 1 ms , can I directly change the HZ > value in <asm-i386/param.h> and recompile my kernel so that my timer > interrupt will occur frequently? > Well, 1) is true, but you can also increase HZ over 1000 if you like, but that will usually cause more overhead, since, although a schedule may not take place every HZ, a timer interrupt will. -- Steve ^ permalink raw reply [flat|nested] 14+ messages in thread
* scheduler/SCHED_FIFO behaviour 2005-04-03 23:08 ` Steven Rostedt @ 2005-04-04 23:06 ` Arun Srinivas 2005-04-04 23:17 ` Steven Rostedt 0 siblings, 1 reply; 14+ messages in thread From: Arun Srinivas @ 2005-04-04 23:06 UTC (permalink / raw) To: rostedt; +Cc: juhl-lkml, linux-kernel I am scheduling 2 SCHED_FIFO processes and set them affinity( process A runs on processor 1 and process B runs on processor 2), on a HT processor.(I did this cause I wanted to run them together).Now, in schedule() I measure the timedifference between when they are scheduled. I found that when I introduce these 2 processes as SCHED_FIFO they are 1)scheduled only once and run till completion ( they running time is around 2 mins.) 2)entire system appears frozen....no mouse/key presses detected until the processes exit. >From what I observed does it mean that even the OS / interrupt handler does not occur during the entire period of time these real time processes run?? (as I said the processes run in minutes). How can I verify that? Thanks Arun >From: Steven Rostedt <rostedt@goodmis.org> >To: Arun Srinivas <getarunsri@hotmail.com> >CC: juhl-lkml@dif.dk, LKML <linux-kernel@vger.kernel.org> >Subject: Re: sched /HT processor >Date: Sun, 03 Apr 2005 19:08:06 -0400 > >On Mon, 2005-04-04 at 04:22 +0530, Arun Srinivas wrote: > > Thanks. yes, a reschedule may not take place after a ms, if the >currently > > running task cannot be preempted by another task. > > > > (1) But, can a reschedule happen within a millisec (or once a process is > > scheduled can schedule() be called before the next millisec.) ? > > > >Yes. For example: a high priority task may be waiting for some IO to >come in. Right after the normal timer interrupt scheduled another task, >the IO may come in and wake the high priority process up. This process >will preempt the other task right away. (ie. less than 1 ms). > > > 2) Also in case argument (1) is not true, and I want rescheduling to be >done > > (i.e., schedule() called) in less than 1 ms , can I directly change the >HZ > > value in <asm-i386/param.h> and recompile my kernel so that my timer > > interrupt will occur frequently? > > > >Well, 1) is true, but you can also increase HZ over 1000 if you like, >but that will usually cause more overhead, since, although a schedule >may not take place every HZ, a timer interrupt will. > >-- Steve > > _________________________________________________________________ Want to meet David Beckham? http://www.msn.co.in/gillette/ Fly to Madrid with Gillette! ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: scheduler/SCHED_FIFO behaviour 2005-04-04 23:06 ` scheduler/SCHED_FIFO behaviour Arun Srinivas @ 2005-04-04 23:17 ` Steven Rostedt 2005-04-05 2:16 ` Arun Srinivas 0 siblings, 1 reply; 14+ messages in thread From: Steven Rostedt @ 2005-04-04 23:17 UTC (permalink / raw) To: Arun Srinivas; +Cc: juhl-lkml, LKML On Tue, 2005-04-05 at 04:36 +0530, Arun Srinivas wrote: > I am scheduling 2 SCHED_FIFO processes and set them affinity( process A runs > on processor 1 and process B runs on processor 2), on a HT processor.(I did > this cause I wanted to run them together).Now, in schedule() I measure the > timedifference between when they are scheduled. I found that when I > introduce these 2 processes as SCHED_FIFO they are > > 1)scheduled only once and run till completion ( they running time is around > 2 mins.) If they are the highest priority task, and running as FIFO this is the proper behavior. > 2)entire system appears frozen....no mouse/key presses detected until the > processes exit. > If X is not at a higher priority than the test you are running, it will never get a chance to run. > >From what I observed does it mean that even the OS / interrupt handler does > not occur during the entire period of time these real time processes run?? > (as I said the processes run in minutes). The interrupts do get processed. Now the bottom halves and tasklets may be starved if they are set at a lower priority than your test (ie. the ksoftirqd thread). But most likely they are processed too. > How can I verify that? > #!/bin/sh cat /proc/interrupts run_test cat /proc/interrupts If the run_test takes 2 minutes, you should see a large difference in the two outputs. -- Steve > Thanks > Arun ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: scheduler/SCHED_FIFO behaviour 2005-04-04 23:17 ` Steven Rostedt @ 2005-04-05 2:16 ` Arun Srinivas 2005-04-05 3:33 ` Steven Rostedt 0 siblings, 1 reply; 14+ messages in thread From: Arun Srinivas @ 2005-04-05 2:16 UTC (permalink / raw) To: rostedt; +Cc: juhl-lkml, linux-kernel ok.My program runs for 30 sec. approx. I did #!/bin/sh cat /proc/interrupts run_test cat /proc/interrupts and I see there is quite some difference in the numbers.....meaning interrupts have been processed by the respective processor when my SCHED_FIFO processes have been running on both the cpu's. But, then I am not sure why I am getting only 1 reading for the timediff. of schedule between my 2 processes.I do the following in my schedule() in sched.c: ( I make the kernel know the pid's of my 2 process...lets say pid1 and pid2) /* in function schedule() in sched.c*/ schedule() { need _resched: /* after now=sched_clock(); I insert my code here*/ if(current->pid=pid1) { time1=now; } elseif (current->pid=pid2) { time2=now; } /*after i get the 2 values for time1 and time2*/ timediff= time1-time2; // or time2 - time1 which ever is greater*/ printk(KERN_ERR "%llu",timediff); } So, what I want from the above code is whenever process1 or process2 is being scheduled measure the time and print the timedifference. But, when I run my 2 processes as SCHED_FIFO processes i get only one set of readings....indicating they have been scheduled only once and run till completion. But, as we saw above if interrupts have been processed they must have been scheduled several times(i.e., schedule() called several times). Is my measurement procedure not correct? please help. thanks arun >From: Steven Rostedt <rostedt@goodmis.org> >To: Arun Srinivas <getarunsri@hotmail.com> >CC: juhl-lkml@dif.dk, LKML <linux-kernel@vger.kernel.org> >Subject: Re: scheduler/SCHED_FIFO behaviour >Date: Mon, 04 Apr 2005 19:17:04 -0400 > >On Tue, 2005-04-05 at 04:36 +0530, Arun Srinivas wrote: > > I am scheduling 2 SCHED_FIFO processes and set them affinity( process A >runs > > on processor 1 and process B runs on processor 2), on a HT processor.(I >did > > this cause I wanted to run them together).Now, in schedule() I measure >the > > timedifference between when they are scheduled. I found that when I > > introduce these 2 processes as SCHED_FIFO they are > > > > 1)scheduled only once and run till completion ( they running time is >around > > 2 mins.) > >If they are the highest priority task, and running as FIFO this is the >proper behavior. > > > 2)entire system appears frozen....no mouse/key presses detected until >the > > processes exit. > > > >If X is not at a higher priority than the test you are running, it will >never get a chance to run. > > > >From what I observed does it mean that even the OS / interrupt handler >does > > not occur during the entire period of time these real time processes >run?? > > (as I said the processes run in minutes). > >The interrupts do get processed. Now the bottom halves and tasklets may >be starved if they are set at a lower priority than your test (ie. the >ksoftirqd thread). But most likely they are processed too. > > > How can I verify that? > > > >#!/bin/sh >cat /proc/interrupts >run_test >cat /proc/interrupts > >If the run_test takes 2 minutes, you should see a large difference in >the two outputs. > >-- Steve > > > Thanks > > Arun > > _________________________________________________________________ The MSN Survey! http://www.cross-tab.com/surveys/run/test.asp?sid=2026&respid=1 Help us help you better! ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: scheduler/SCHED_FIFO behaviour 2005-04-05 2:16 ` Arun Srinivas @ 2005-04-05 3:33 ` Steven Rostedt 0 siblings, 0 replies; 14+ messages in thread From: Steven Rostedt @ 2005-04-05 3:33 UTC (permalink / raw) To: Arun Srinivas; +Cc: juhl-lkml, LKML On Tue, 2005-04-05 at 07:46 +0530, Arun Srinivas wrote: > > So, what I want from the above code is whenever process1 or process2 is > being scheduled measure the time and print the timedifference. But, when I > run my 2 processes as SCHED_FIFO processes i get only one set of > readings....indicating they have been scheduled only once and run till > completion. > > But, as we saw above if interrupts have been processed they must have been > scheduled several times(i.e., schedule() called several times). Is my > measurement procedure not correct? No! Interrupts are not scheduled. When an interrupt goes off, the interrupt service routine (ISR) is executed. It doesn't need to be scheduled. It runs right where it interrupted the CPU. That's why you need to be careful about protecting data that ISRs manipulate with spin_lock_irqsave. This not only protects against multiple CPUs, but turns off interrupts so that an interrupt wont be called and one of the ISRs modify the data you need to be atomic. Your tasks are running and will be interrupted by an ISR, on return from the routine, a check is made to see if your tasks should be preempted. But since they are the highest running tasks and in FIFO mode, the check determines that schedule should not be called. So you will not see any schedules while your tasks are running. Now, if you where running Ingo's RT patch with PREEMPT_HARDIRQ enabled, and your tasks were of lower priority than the ISR thread handlers, then you would see the scheduling. Maybe that is what you want? -- Steve ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: sched /HT processor 2005-04-03 15:31 ` Steven Rostedt 2005-04-03 22:52 ` Arun Srinivas @ 2005-04-03 22:52 ` Arun Srinivas 1 sibling, 0 replies; 14+ messages in thread From: Arun Srinivas @ 2005-04-03 22:52 UTC (permalink / raw) To: rostedt, juhl-lkml; +Cc: linux-kernel >From: Steven Rostedt <rostedt@goodmis.org> >To: Jesper Juhl <juhl-lkml@dif.dk> >CC: Arun Srinivas <getarunsri@hotmail.com>, LKML ><linux-kernel@vger.kernel.org> >Subject: Re: sched /HT processor >Date: Sun, 03 Apr 2005 11:31:03 -0400 > >On Sun, 2005-04-03 at 13:17 +0200, Jesper Juhl wrote: > > > > A reschedule can happen once every ms, but also upon returning to > > userspace and when returning from an interrupt handler, and also when > > something in the kernel explicitly calls schedule() or sleeps (which in > > turn results in a call to schedule()). And each CPU runs schedule() > > independently. > > At least that's my understanding of it - if I'm wrong I hope someone on > > the list will correct me. > >You're correct, but I'll add some more details here. The actual >schedule happens when needed. A schedule may not take place at every >ms, if the task running is not done with its time slice and no events >happened where another task should preempt it. If an RT task is running >in a FIFO policy, then it will continue to run until it calls schedule >itself or another process of higher priority preempts it. > >Now if you don't have PREEMPT turned on, than the schedule won't take >place at all while a task is in the kernel, unless the task explicitly >calls schedule. > >What happens on a timer interrupt where a task is done with its time >slice or another event where a schedule should take place, is just the >need_resched flag is set for the task. On return from the interrupt the >flag is checked, and if set a schedule is called. > >This is still a pretty basic description of what really happens, and if >you want to learn more, just start searching the kernel code for >schedule and need_resched. Don't forget to look in the asm code (ie >entry.S, and dependent on your arch other *.S files). > >-- Steve > > _________________________________________________________________ News, views and gossip. http://www.msn.co.in/Cinema/ Get it all at MSN Cinema! ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2005-04-05 3:33 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <bpH71yEXU00000397@hotmail.com>
2005-04-03 0:37 ` sched /HT processor Arun Srinivas
2005-04-03 1:17 ` Steven Rostedt
2005-04-03 2:16 ` Arun Srinivas
2005-04-03 4:22 ` Steven Rostedt
2005-04-03 7:52 ` Arun Srinivas
2005-04-03 11:17 ` Jesper Juhl
2005-04-03 15:31 ` Steven Rostedt
2005-04-03 22:52 ` Arun Srinivas
2005-04-03 23:08 ` Steven Rostedt
2005-04-04 23:06 ` scheduler/SCHED_FIFO behaviour Arun Srinivas
2005-04-04 23:17 ` Steven Rostedt
2005-04-05 2:16 ` Arun Srinivas
2005-04-05 3:33 ` Steven Rostedt
2005-04-03 22:52 ` sched /HT processor Arun Srinivas
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox