public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* 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 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

* 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

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