All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/2] Clean the policy manipulation path in domain creation
@ 2024-05-29 14:30 Alejandro Vallejo
  2024-05-29 14:30 ` [PATCH v4 1/2] tools/xg: Streamline cpu policy serialise/deserialise calls Alejandro Vallejo
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Alejandro Vallejo @ 2024-05-29 14:30 UTC (permalink / raw)
  To: Xen-devel
  Cc: Alejandro Vallejo, Anthony PERARD, Juergen Gross, Jan Beulich,
	Andrew Cooper, Roger Pau Monné

v3 -> v4:
  * More changes in style and comments
  * Removal of unneeded local variables
  * Fixed unhandled corner cases in bsearch()

v2 -> v3:
  * Style adjustments
  * Revert of loop index scope refactors

v1 -> v2:
  * Removed xc_cpu_policy from xenguest.h (dropped v1/patch1)
  * Added accessors for xc_cpu_policy so the serialised form can be extracted.
  * Modified xen-cpuid to use accessors.

==== Original cover letter ====

In the context of creating a domain, we currently issue a lot of hypercalls
redundantly while populating its CPU policy; likely a side effect of
organic growth more than anything else.

However, the worst part is not the overhead (this is a glacially cold
path), but the insane amounts of boilerplate that make it really hard to
pick apart what's going on. One major contributor to this situation is the
fact that what's effectively "setup" and "teardown" phases in policy
manipulation are not factored out from the functions that perform said
manipulations, leading to the same getters and setter being invoked many
times, when once each would do.

Another big contributor is the code being unaware of when a policy is
serialised and when it's not.

This patch attempts to alleviate this situation, yielding over 200 LoC
reduction.

Patch 1: Mechanical change. Makes xc_cpu_policy_t public so it's usable
         from clients of libxc/libxg.
Patch 2: Changes the (de)serialization wrappers in xenguest so they always
         serialise to/from the internal buffers of xc_cpu_policy_t. The
         struct is suitably expanded to hold extra information required.
Patch 3: Performs the refactor of the policy manipulation code so that it
         follows a strict: PULL_POLICIES, MUTATE_POLICY (n times), PUSH_POLICY.

Alejandro Vallejo (2):
  tools/xg: Streamline cpu policy serialise/deserialise calls
  tools/xg: Clean up xend-style overrides for CPU policies

 tools/include/xenguest.h            |  14 +-
 tools/libs/guest/xg_cpuid_x86.c     | 525 ++++++++++------------------
 tools/libs/guest/xg_private.h       |   2 +
 tools/libs/guest/xg_sr_common_x86.c |  56 ++-
 tools/misc/xen-cpuid.c              |  41 +--
 5 files changed, 235 insertions(+), 403 deletions(-)

-- 
2.34.1



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

end of thread, other threads:[~2024-06-13 15:39 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-29 14:30 [PATCH v4 0/2] Clean the policy manipulation path in domain creation Alejandro Vallejo
2024-05-29 14:30 ` [PATCH v4 1/2] tools/xg: Streamline cpu policy serialise/deserialise calls Alejandro Vallejo
2024-05-30 23:59   ` Andrew Cooper
2024-06-13 15:38     ` Alejandro Vallejo
2024-05-29 14:30 ` [PATCH v4 2/2] tools/xg: Clean up xend-style overrides for CPU policies Alejandro Vallejo
2024-05-30  9:41   ` Roger Pau Monné
2024-05-30  9:44 ` [PATCH v4 0/2] Clean the policy manipulation path in domain creation Andrew Cooper
2024-05-30 14:48   ` Oleksii K.

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.