Brice Goglin, le Thu 05 Nov 2009 17:22:15 +0100, a écrit :
> + int hwloc_plpa_sched_getaffinity(pid_t pid, hwloc_cpuset_t cpuset);
> It's just a hwloc_get_cpubind(), but we don't have it since it would not
> be supported on all OS. But I think we should add it anyway.
Being discussed in another thread.
> * Then we have all count-spec related API, which lets you look for
> information about all processors, or all online ones, or all offline ones.
> If people are really interested with offline CPUs, they can look at the
> get_offline_cpuset below. There is no topology information about offline
> CPUs on Linux anyway,
And at least on some other OSes as well, but not on Solaris for
> + hwloc_cpuset_t hwloc_topology_get_offline_cpuset(hwloc_topology_t topology);
> Returns a CPU set of existing CPUs that are offline, disabled by
> administrator, or unavailable to this process if we're restricting the
> topology to the process origin binding for instance. I am not sure we
> actually need to distinguish all these cases.
Mmm, I think there's one more thing that is actually more precise in
some way: "the CPUs that we don't provide topology objects for": some
OSes don't expose unauthorized CPUs even if they are online. It would
thus also include CPUs which have explicitly been ignored because
HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM is not set.
I think it can be useful to provide the cpuset of allowed cpus. One
could imagine a tool that negociates with the administrator tools
which cpus to be added/removed from the allowed set, knowing the whole
topology and which CPUs are allowed would be useful. Maybe powering
up/down could be involved too, thus the offline mask too. The current
binding is already available from hwloc_get_cpubind.
Actually, that gives me the idea that it'd be probably nice to somehow
show that in the graphical lstopo :)