I just got access to an SGI Altix machine with 192 dual core Itaniums and I
noticed the vary high socket id numbers, they range from 262144 to 359936.
For the (temporary) cores_on_sockets array that would be around 43MB.
This patch series addresses this problem.
The first two patches will abstract between the socket_ids and the socket
arrays, to make the actual changes less intrusive.
Patch 1/5 will introduce a mapping function from socket_id to indexes into the
socket arrays and back. There is no functional change.
Patch 2/5 will introduce a variable which holds the extent of the indexes of
the socket arrays (i.e. the actual size of these arrays). There is no
functional change.
Patch 3/5 will maintain the minimum socket_id, so that we can subtract this
minimum from all the array extent.
Patch 4/5 will calculate the length of common trailing zeros in all socket_ids,
so that we can safely shift away these zeros.
(Optional) Patch 5/5 will introduce get_socket_info3(), so that the user can have access
to the min_socket_id.
After this patch the range of socket indexes is down to 0..191, which gives
nice small arrays.
Bye,
Bert
PS: I will test this on the SGI machine tomorrow.
---
src/libplpa/plpa.h.in | 6 ++
src/libplpa/plpa_map.c | 131 +++++++++++++++++++++++++++++++++++------------
2 files changed, 103 insertions(+), 34 deletions(-)
|