* [dpdk-dev] [PATCH] usertools: use /sys/devices/system/cpu for CPU layout script
@ 2017-03-31 12:21 Andriy Berestovskyy
2017-04-25 8:48 ` Thomas Monjalon
0 siblings, 1 reply; 4+ messages in thread
From: Andriy Berestovskyy @ 2017-03-31 12:21 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dev
Some platforms do not have core/socket info in /proc/cpuinfo.
Signed-off-by: Andriy Berestovskyy <Andriy.Berestovskyy@caviumnetworks.com>
---
usertools/cpu_layout.py | 53 +++++++++++++++++++++----------------------------
1 file changed, 23 insertions(+), 30 deletions(-)
diff --git a/usertools/cpu_layout.py b/usertools/cpu_layout.py
index 0e049a6..5735891 100755
--- a/usertools/cpu_layout.py
+++ b/usertools/cpu_layout.py
@@ -4,6 +4,7 @@
# BSD LICENSE
#
# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+# Copyright(c) 2017 Cavium Networks Ltd. All rights reserved.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -38,40 +39,32 @@
sockets = []
cores = []
core_map = {}
-
-fd = open("/proc/cpuinfo")
-lines = fd.readlines()
+base_path = "/sys/devices/system/cpu"
+fd = open("{}/kernel_max".format(base_path))
+max_cpus = int(fd.read())
fd.close()
-
-core_details = []
-core_lines = {}
-for line in lines:
- if len(line.strip()) != 0:
- name, value = line.split(":", 1)
- core_lines[name.strip()] = value.strip()
- else:
- core_details.append(core_lines)
- core_lines = {}
-
-for core in core_details:
- for field in ["processor", "core id", "physical id"]:
- if field not in core:
- print("Error getting '%s' value from /proc/cpuinfo" % field)
- sys.exit(1)
- core[field] = int(core[field])
-
- if core["core id"] not in cores:
- cores.append(core["core id"])
- if core["physical id"] not in sockets:
- sockets.append(core["physical id"])
- key = (core["physical id"], core["core id"])
+for cpu in xrange(max_cpus + 1):
+ try:
+ fd = open("{}/cpu{}/topology/core_id".format(base_path, cpu))
+ except:
+ break
+ core = int(fd.read())
+ fd.close()
+ fd = open("{}/cpu{}/topology/physical_package_id".format(base_path, cpu))
+ socket = int(fd.read())
+ fd.close()
+ if core not in cores:
+ cores.append(core)
+ if socket not in sockets:
+ sockets.append(socket)
+ key = (socket, core)
if key not in core_map:
core_map[key] = []
- core_map[key].append(core["processor"])
+ core_map[key].append(cpu)
-print("============================================================")
-print("Core and Socket Information (as reported by '/proc/cpuinfo')")
-print("============================================================\n")
+print(format("=" * (47 + len(base_path))))
+print("Core and Socket Information (as reported by '{}')".format(base_path))
+print("{}\n".format("=" * (47 + len(base_path))))
print("cores = ", cores)
print("sockets = ", sockets)
print("")
--
2.7.4
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH] usertools: use /sys/devices/system/cpu for CPU layout script
2017-03-31 12:21 [dpdk-dev] [PATCH] usertools: use /sys/devices/system/cpu for CPU layout script Andriy Berestovskyy
@ 2017-04-25 8:48 ` Thomas Monjalon
2017-04-25 10:19 ` Andriy Berestovskyy
0 siblings, 1 reply; 4+ messages in thread
From: Thomas Monjalon @ 2017-04-25 8:48 UTC (permalink / raw)
To: Andriy Berestovskyy; +Cc: dev
Hi,
31/03/2017 14:21, Andriy Berestovskyy:
> Some platforms do not have core/socket info in /proc/cpuinfo.
>
> Signed-off-by: Andriy Berestovskyy <Andriy.Berestovskyy@caviumnetworks.com>
> ---
> usertools/cpu_layout.py | 53 +++++++++++++++++++++----------------------------
> 1 file changed, 23 insertions(+), 30 deletions(-)
Applied, thanks for improving this script.
Do you think it is really a good idea to keep and maintain this script
in DPDK? It was intentionnally not exported in "make install".
I think it is a bit out of scope, and I wonder which alternatives
do we have? I know hwloc/lstopo, but there are probably others.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH] usertools: use /sys/devices/system/cpu for CPU layout script
2017-04-25 8:48 ` Thomas Monjalon
@ 2017-04-25 10:19 ` Andriy Berestovskyy
2017-04-25 11:01 ` Thomas Monjalon
0 siblings, 1 reply; 4+ messages in thread
From: Andriy Berestovskyy @ 2017-04-25 10:19 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dev
Hi,
On 25.04.2017 10:48, Thomas Monjalon wrote:
> Do you think it is really a good idea to keep and maintain this script
> in DPDK? It was intentionnally not exported in "make install".
> I think it is a bit out of scope, and I wonder which alternatives
> do we have? I know hwloc/lstopo, but there are probably others.
hwloc does not work on my target, but you are right, there are a variety
of tools for that. For example, I prefer numactl (option -H) because it
also allows to do many useful things, like bind CPUs to one node and
memory allocations to another.
At the moment the script is just like the lscpu, which is preinstalled
on Ubuntu and mentioned in the documentation alongside with the cpu_layout.
We could try to make the script more useful, for example, show which NIC
is on which NUMA node. Still, it will be just a subset of functionality
of tools like hwloc...
Regards,
Andriy
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH] usertools: use /sys/devices/system/cpu for CPU layout script
2017-04-25 10:19 ` Andriy Berestovskyy
@ 2017-04-25 11:01 ` Thomas Monjalon
0 siblings, 0 replies; 4+ messages in thread
From: Thomas Monjalon @ 2017-04-25 11:01 UTC (permalink / raw)
To: Andriy Berestovskyy; +Cc: dev
25/04/2017 12:19, Andriy Berestovskyy:
> Hi,
>
> On 25.04.2017 10:48, Thomas Monjalon wrote:
> > Do you think it is really a good idea to keep and maintain this script
> > in DPDK? It was intentionnally not exported in "make install".
> > I think it is a bit out of scope, and I wonder which alternatives
> > do we have? I know hwloc/lstopo, but there are probably others.
>
> hwloc does not work on my target, but you are right, there are a variety
> of tools for that. For example, I prefer numactl (option -H) because it
> also allows to do many useful things, like bind CPUs to one node and
> memory allocations to another.
>
> At the moment the script is just like the lscpu, which is preinstalled
> on Ubuntu and mentioned in the documentation alongside with the cpu_layout.
>
> We could try to make the script more useful, for example, show which NIC
> is on which NUMA node. Still, it will be just a subset of functionality
> of tools like hwloc...
Yes.
The other idea would be to properly document existing tools
and remove this one.
Opinions?
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-04-25 11:01 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-31 12:21 [dpdk-dev] [PATCH] usertools: use /sys/devices/system/cpu for CPU layout script Andriy Berestovskyy
2017-04-25 8:48 ` Thomas Monjalon
2017-04-25 10:19 ` Andriy Berestovskyy
2017-04-25 11:01 ` Thomas Monjalon
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).