linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] How to get number of physical CPU in linux from user space?
  2002-10-25 19:13   ` Dave Jones
@ 2002-01-16 19:35     ` Pavel Machek
  2002-10-25 19:21     ` Robert Love
  1 sibling, 0 replies; 10+ messages in thread
From: Pavel Machek @ 2002-01-16 19:35 UTC (permalink / raw)
  To: Dave Jones, Robert Love, linux-kernel, Nakajima, Jun, chrisl,
	Martin J. Bligh

>  > +#ifdef CONFIG_SMP
>  > +	seq_printf(m, "physical processor ID\t: %d\n", phys_proc_id[n]);
>  > +	seq_printf(m, "number of siblings\t: %d\n", smp_num_siblings);
>  > +#endif
> 
> Should this be wrapped in a if (cpu_has_ht(c)) { }  ?
> Seems silly to be displaying HT information on non-HT CPUs.

Well, without if () you can tell the difference
between 'no hyperthreading' and 'too old
kernel to tell me about hyperthreading so I'd
suggest kill the if ().
				Pavel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: How to get number of physical CPU in linux from user space?
@ 2002-10-25 18:54 Nakajima, Jun
  2002-10-25 19:09 ` [PATCH] " Robert Love
  2002-10-25 19:12 ` chrisl
  0 siblings, 2 replies; 10+ messages in thread
From: Nakajima, Jun @ 2002-10-25 18:54 UTC (permalink / raw)
  To: chrisl, Martin J. Bligh; +Cc: linux-kernel

Recent distributions or the AC tree has additional fields in /proc/cpu,
which tell
- physical package id
- number of threads 
for each CPU.

Using this info, you should be able to detect it. The problem is that they
are not using the same keywords. I'm asking them to make those fields
consistent.

Thanks,
Jun

-----Original Message-----
From: chrisl@vmware.com [mailto:chrisl@vmware.com]
Sent: Friday, October 25, 2002 11:20 AM
To: Martin J. Bligh
Cc: linux-kernel@vger.kernel.org
Subject: Re: How to get number of physical CPU in linux from user space?



On Fri, Oct 25, 2002 at 01:27:00AM -0700, Martin J. Bligh wrote:
> Define "physical CPU number" ;-) If you want to deteact which

I mean the number of cpu chip you can count on the mother board.

> ones are paired up, I believe that if all but the last bit
> of the apicid is the same, they're siblings. You might have to
> dig the apicid out of the bootlog if the cpuinfo stuff doesn't
> tell you.

And you are right. Those apicid, after mask out the siblings,
are put in phys_cpu_id[] array in kernel.

I think about look at bootlog too, but that is not a reliable
way because bootlog might already been flush out after some
time.

Cheers

Chris



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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] How to get number of physical CPU in linux from user space?
  2002-10-25 18:54 How to get number of physical CPU in linux from user space? Nakajima, Jun
@ 2002-10-25 19:09 ` Robert Love
  2002-10-25 19:13   ` Dave Jones
  2002-10-25 21:13   ` Alan Cox
  2002-10-25 19:12 ` chrisl
  1 sibling, 2 replies; 10+ messages in thread
From: Robert Love @ 2002-10-25 19:09 UTC (permalink / raw)
  To: linux-kernel; +Cc: Nakajima, Jun, chrisl, Martin J. Bligh

On Fri, 2002-10-25 at 14:54, Nakajima, Jun wrote:

> Recent distributions or the AC tree has additional fields in
> /proc/cpu, which tell
> - physical package id
> - number of threads 

Attached patch for 2.5 adds the same fields the 2.4-ac tree have.  I
consider those "standard" enough.

Is this something HT users want?

	Robert Love

 proc.c |    5 +++++
 1 files changed, 5 insertions(+)

diff -urN linux-2.5.44/arch/i386/kernel/cpu/proc.c linux/arch/i386/kernel/cpu/proc.c
--- linux-2.5.44/arch/i386/kernel/cpu/proc.c	2002-10-19 00:02:29.000000000 -0400
+++ linux/arch/i386/kernel/cpu/proc.c	2002-10-25 15:06:23.000000000 -0400
@@ -17,6 +17,7 @@
 	 * applications want to get the raw CPUID data, they should access
 	 * /dev/cpu/<cpu_nr>/cpuid instead.
 	 */
+	extern int phys_proc_id[NR_CPUS];
 	static char *x86_cap_flags[] = {
 		/* Intel-defined */
 	        "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
@@ -74,6 +75,10 @@
 	/* Cache size */
 	if (c->x86_cache_size >= 0)
 		seq_printf(m, "cache size\t: %d KB\n", c->x86_cache_size);
+#ifdef CONFIG_SMP
+	seq_printf(m, "physical processor ID\t: %d\n", phys_proc_id[n]);
+	seq_printf(m, "number of siblings\t: %d\n", smp_num_siblings);
+#endif
 	
 	/* We use exception 16 if we have hardware math and we've either seen it or the CPU claims it is internal */
 	fpu_exception = c->hard_math && (ignore_irq13 || cpu_has_fpu);


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: How to get number of physical CPU in linux from user space?
  2002-10-25 18:54 How to get number of physical CPU in linux from user space? Nakajima, Jun
  2002-10-25 19:09 ` [PATCH] " Robert Love
@ 2002-10-25 19:12 ` chrisl
  1 sibling, 0 replies; 10+ messages in thread
From: chrisl @ 2002-10-25 19:12 UTC (permalink / raw)
  To: Nakajima, Jun; +Cc: Martin J. Bligh, linux-kernel

On Fri, Oct 25, 2002 at 11:54:53AM -0700, Nakajima, Jun wrote:
> Recent distributions or the AC tree has additional fields in /proc/cpu,
> which tell
> - physical package id
> - number of threads 
> for each CPU.

That is exactly what I am looking for.

> 
> Using this info, you should be able to detect it. The problem is that they
> are not using the same keywords. I'm asking them to make those fields
> consistent.

Cool. Any idea when will those feature come to stander linux kernel?

Thanks.

Chris



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] How to get number of physical CPU in linux from user space?
  2002-10-25 19:09 ` [PATCH] " Robert Love
@ 2002-10-25 19:13   ` Dave Jones
  2002-01-16 19:35     ` Pavel Machek
  2002-10-25 19:21     ` Robert Love
  2002-10-25 21:13   ` Alan Cox
  1 sibling, 2 replies; 10+ messages in thread
From: Dave Jones @ 2002-10-25 19:13 UTC (permalink / raw)
  To: Robert Love; +Cc: linux-kernel, Nakajima, Jun, chrisl, Martin J. Bligh

On Fri, Oct 25, 2002 at 03:09:09PM -0400, Robert Love wrote:
 > +#ifdef CONFIG_SMP
 > +	seq_printf(m, "physical processor ID\t: %d\n", phys_proc_id[n]);
 > +	seq_printf(m, "number of siblings\t: %d\n", smp_num_siblings);
 > +#endif

Should this be wrapped in a if (cpu_has_ht(c)) { }  ?
Seems silly to be displaying HT information on non-HT CPUs.

		Dave

-- 
| Dave Jones.        http://www.codemonkey.org.uk

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] How to get number of physical CPU in linux from user space?
  2002-10-25 19:13   ` Dave Jones
  2002-01-16 19:35     ` Pavel Machek
@ 2002-10-25 19:21     ` Robert Love
  2002-10-25 20:03       ` chrisl
  1 sibling, 1 reply; 10+ messages in thread
From: Robert Love @ 2002-10-25 19:21 UTC (permalink / raw)
  To: Dave Jones, akpm; +Cc: linux-kernel, Nakajima, Jun, chrisl, Martin J. Bligh

On Fri, 2002-10-25 at 15:13, Dave Jones wrote:

> Should this be wrapped in a if (cpu_has_ht(c)) { }  ?
> Seems silly to be displaying HT information on non-HT CPUs.

I am neutral, but is fine with me. It is just "cpu_has_ht", btw.

Take two...

This displays the physical processor id and number of siblings of each
processor in /proc/cpuinfo.

	Robert Love

 .proc.c.swp |binary
 proc.c      |    7 +++++++
 2 files changed, 7 insertions(+)

diff -urN linux-2.5.44/arch/i386/kernel/cpu/proc.c linux/arch/i386/kernel/cpu/proc.c
--- linux-2.5.44/arch/i386/kernel/cpu/proc.c	2002-10-19 00:02:29.000000000 -0400
+++ linux/arch/i386/kernel/cpu/proc.c	2002-10-25 15:18:03.000000000 -0400
@@ -17,6 +17,7 @@
 	 * applications want to get the raw CPUID data, they should access
 	 * /dev/cpu/<cpu_nr>/cpuid instead.
 	 */
+	extern int phys_proc_id[NR_CPUS];
 	static char *x86_cap_flags[] = {
 		/* Intel-defined */
 	        "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
@@ -74,6 +75,12 @@
 	/* Cache size */
 	if (c->x86_cache_size >= 0)
 		seq_printf(m, "cache size\t: %d KB\n", c->x86_cache_size);
+#ifdef CONFIG_SMP
+	if (cpu_has_ht) {
+		seq_printf(m, "physical processor ID\t: %d\n", phys_proc_id[n]);
+		seq_printf(m, "number of siblings\t: %d\n", smp_num_siblings);
+	}
+#endif
 	
 	/* We use exception 16 if we have hardware math and we've either seen it or the CPU claims it is internal */
 	fpu_exception = c->hard_math && (ignore_irq13 || cpu_has_fpu);


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] How to get number of physical CPU in linux from user space?
  2002-10-25 19:21     ` Robert Love
@ 2002-10-25 20:03       ` chrisl
  0 siblings, 0 replies; 10+ messages in thread
From: chrisl @ 2002-10-25 20:03 UTC (permalink / raw)
  To: Robert Love
  Cc: Dave Jones, akpm, linux-kernel, Nakajima, Jun, Martin J. Bligh

Cool. That will work for me.

Thanks

Chris

On Fri, Oct 25, 2002 at 03:21:28PM -0400, Robert Love wrote:
> On Fri, 2002-10-25 at 15:13, Dave Jones wrote:
> 
> > Should this be wrapped in a if (cpu_has_ht(c)) { }  ?
> > Seems silly to be displaying HT information on non-HT CPUs.
> 
> I am neutral, but is fine with me. It is just "cpu_has_ht", btw.
> 
> Take two...
> 
> This displays the physical processor id and number of siblings of each
> processor in /proc/cpuinfo.
> 
> 	Robert Love
> 
>  .proc.c.swp |binary
>  proc.c      |    7 +++++++
>  2 files changed, 7 insertions(+)
> 
> diff -urN linux-2.5.44/arch/i386/kernel/cpu/proc.c linux/arch/i386/kernel/cpu/proc.c
> --- linux-2.5.44/arch/i386/kernel/cpu/proc.c	2002-10-19 00:02:29.000000000 -0400
> +++ linux/arch/i386/kernel/cpu/proc.c	2002-10-25 15:18:03.000000000 -0400
> @@ -17,6 +17,7 @@
>  	 * applications want to get the raw CPUID data, they should access
>  	 * /dev/cpu/<cpu_nr>/cpuid instead.
>  	 */
> +	extern int phys_proc_id[NR_CPUS];
>  	static char *x86_cap_flags[] = {
>  		/* Intel-defined */
>  	        "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
> @@ -74,6 +75,12 @@
>  	/* Cache size */
>  	if (c->x86_cache_size >= 0)
>  		seq_printf(m, "cache size\t: %d KB\n", c->x86_cache_size);
> +#ifdef CONFIG_SMP
> +	if (cpu_has_ht) {
> +		seq_printf(m, "physical processor ID\t: %d\n", phys_proc_id[n]);
> +		seq_printf(m, "number of siblings\t: %d\n", smp_num_siblings);
> +	}
> +#endif
>  	
>  	/* We use exception 16 if we have hardware math and we've either seen it or the CPU claims it is internal */
>  	fpu_exception = c->hard_math && (ignore_irq13 || cpu_has_fpu);
> 



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] How to get number of physical CPU in linux from user space?
  2002-10-25 19:09 ` [PATCH] " Robert Love
  2002-10-25 19:13   ` Dave Jones
@ 2002-10-25 21:13   ` Alan Cox
  1 sibling, 0 replies; 10+ messages in thread
From: Alan Cox @ 2002-10-25 21:13 UTC (permalink / raw)
  To: Robert Love
  Cc: Linux Kernel Mailing List, Nakajima, Jun, chrisl, Martin J. Bligh

On Fri, 2002-10-25 at 20:09, Robert Love wrote:

> +#ifdef CONFIG_SMP
> +	seq_printf(m, "physical processor ID\t: %d\n", phys_proc_id[n]);
> +	seq_printf(m, "number of siblings\t: %d\n", smp_num_siblings);
> +#endif

Congratulations you just broke glibc. There are reasons the -ac patch
was changed to print something a little different.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH] How to get number of physical CPU in linux from user  space?
@ 2002-10-25 20:38 Nakajima, Jun
  0 siblings, 0 replies; 10+ messages in thread
From: Nakajima, Jun @ 2002-10-25 20:38 UTC (permalink / raw)
  To: 'Robert Love', 'Dave Jones', 'akpm@digeo.com'
  Cc: 'linux-kernel@vger.kernel.org',
	'chrisl@vmware.com', 'Martin J. Bligh'

You might want to remove __initdata (in smpboot.c):
int __initdata phys_proc_id[NR_CPUS];

Jun Nakajima

-----Original Message-----
From: Nakajima, Jun 
Sent: Friday, October 25, 2002 12:49 PM
To: Robert Love; Dave Jones; akpm@digeo.com
Cc: linux-kernel@vger.kernel.org; Nakajima, Jun; chrisl@vmware.com;
Martin J. Bligh
Subject: RE: [PATCH] How to get number of physical CPU in linux from
user space?


One more request :-)

Actually "processor" keyword was not good in "physical processor ID"
(someone may be grepping it to find out the number of processors), and it
was one of the reasons it was changed/fixed in the AC tree. 

Since (H/W) threads (rather than "siblings") in a CPU is generic (i.e. not
just an Intel thing), I would like to propose this ("physical id" is from
AC). Alan also simplified "number of simblings" to  "siblings". 

+#ifdef CONFIG_SMP
+	if (cpu_has_ht) {
+		seq_printf(m, "physical id\t: %d\n", phys_proc_id[n]);
+		seq_printf(m, "threads\t\t: %d\n", smp_num_siblings);
+	}
+#endif

Thanks,
Jun

-----Original Message-----
From: Robert Love [mailto:rml@tech9.net]
Sent: Friday, October 25, 2002 12:21 PM
To: Dave Jones; akpm@digeo.com
Cc: linux-kernel@vger.kernel.org; Nakajima, Jun; chrisl@vmware.com;
Martin J. Bligh
Subject: Re: [PATCH] How to get number of physical CPU in linux from
user space?


On Fri, 2002-10-25 at 15:13, Dave Jones wrote:

> Should this be wrapped in a if (cpu_has_ht(c)) { }  ?
> Seems silly to be displaying HT information on non-HT CPUs.

I am neutral, but is fine with me. It is just "cpu_has_ht", btw.

Take two...

This displays the physical processor id and number of siblings of each
processor in /proc/cpuinfo.

	Robert Love

 .proc.c.swp |binary
 proc.c      |    7 +++++++
 2 files changed, 7 insertions(+)

diff -urN linux-2.5.44/arch/i386/kernel/cpu/proc.c
linux/arch/i386/kernel/cpu/proc.c
--- linux-2.5.44/arch/i386/kernel/cpu/proc.c	2002-10-19
00:02:29.000000000 -0400
+++ linux/arch/i386/kernel/cpu/proc.c	2002-10-25 15:18:03.000000000 -0400
@@ -17,6 +17,7 @@
 	 * applications want to get the raw CPUID data, they should access
 	 * /dev/cpu/<cpu_nr>/cpuid instead.
 	 */
+	extern int phys_proc_id[NR_CPUS];
 	static char *x86_cap_flags[] = {
 		/* Intel-defined */
 	        "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
@@ -74,6 +75,12 @@
 	/* Cache size */
 	if (c->x86_cache_size >= 0)
 		seq_printf(m, "cache size\t: %d KB\n", c->x86_cache_size);
+#ifdef CONFIG_SMP
+	if (cpu_has_ht) {
+		seq_printf(m, "physical processor ID\t: %d\n",
phys_proc_id[n]);
+		seq_printf(m, "number of siblings\t: %d\n",
smp_num_siblings);
+	}
+#endif
 	
 	/* We use exception 16 if we have hardware math and we've either
seen it or the CPU claims it is internal */
 	fpu_exception = c->hard_math && (ignore_irq13 || cpu_has_fpu);

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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH] How to get number of physical CPU in linux from user  space?
@ 2002-10-25 19:48 Nakajima, Jun
  0 siblings, 0 replies; 10+ messages in thread
From: Nakajima, Jun @ 2002-10-25 19:48 UTC (permalink / raw)
  To: Robert Love, Dave Jones, akpm
  Cc: linux-kernel, Nakajima, Jun, chrisl, Martin J. Bligh

One more request :-)

Actually "processor" keyword was not good in "physical processor ID"
(someone may be grepping it to find out the number of processors), and it
was one of the reasons it was changed/fixed in the AC tree. 

Since (H/W) threads (rather than "siblings") in a CPU is generic (i.e. not
just an Intel thing), I would like to propose this ("physical id" is from
AC). Alan also simplified "number of simblings" to  "siblings". 

+#ifdef CONFIG_SMP
+	if (cpu_has_ht) {
+		seq_printf(m, "physical id\t: %d\n", phys_proc_id[n]);
+		seq_printf(m, "threads\t\t: %d\n", smp_num_siblings);
+	}
+#endif

Thanks,
Jun

-----Original Message-----
From: Robert Love [mailto:rml@tech9.net]
Sent: Friday, October 25, 2002 12:21 PM
To: Dave Jones; akpm@digeo.com
Cc: linux-kernel@vger.kernel.org; Nakajima, Jun; chrisl@vmware.com;
Martin J. Bligh
Subject: Re: [PATCH] How to get number of physical CPU in linux from
user space?


On Fri, 2002-10-25 at 15:13, Dave Jones wrote:

> Should this be wrapped in a if (cpu_has_ht(c)) { }  ?
> Seems silly to be displaying HT information on non-HT CPUs.

I am neutral, but is fine with me. It is just "cpu_has_ht", btw.

Take two...

This displays the physical processor id and number of siblings of each
processor in /proc/cpuinfo.

	Robert Love

 .proc.c.swp |binary
 proc.c      |    7 +++++++
 2 files changed, 7 insertions(+)

diff -urN linux-2.5.44/arch/i386/kernel/cpu/proc.c
linux/arch/i386/kernel/cpu/proc.c
--- linux-2.5.44/arch/i386/kernel/cpu/proc.c	2002-10-19
00:02:29.000000000 -0400
+++ linux/arch/i386/kernel/cpu/proc.c	2002-10-25 15:18:03.000000000 -0400
@@ -17,6 +17,7 @@
 	 * applications want to get the raw CPUID data, they should access
 	 * /dev/cpu/<cpu_nr>/cpuid instead.
 	 */
+	extern int phys_proc_id[NR_CPUS];
 	static char *x86_cap_flags[] = {
 		/* Intel-defined */
 	        "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
@@ -74,6 +75,12 @@
 	/* Cache size */
 	if (c->x86_cache_size >= 0)
 		seq_printf(m, "cache size\t: %d KB\n", c->x86_cache_size);
+#ifdef CONFIG_SMP
+	if (cpu_has_ht) {
+		seq_printf(m, "physical processor ID\t: %d\n",
phys_proc_id[n]);
+		seq_printf(m, "number of siblings\t: %d\n",
smp_num_siblings);
+	}
+#endif
 	
 	/* We use exception 16 if we have hardware math and we've either
seen it or the CPU claims it is internal */
 	fpu_exception = c->hard_math && (ignore_irq13 || cpu_has_fpu);

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

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2002-11-08 21:32 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-25 18:54 How to get number of physical CPU in linux from user space? Nakajima, Jun
2002-10-25 19:09 ` [PATCH] " Robert Love
2002-10-25 19:13   ` Dave Jones
2002-01-16 19:35     ` Pavel Machek
2002-10-25 19:21     ` Robert Love
2002-10-25 20:03       ` chrisl
2002-10-25 21:13   ` Alan Cox
2002-10-25 19:12 ` chrisl
2002-10-25 19:48 [PATCH] " Nakajima, Jun
2002-10-25 20:38 Nakajima, Jun

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).