[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH RFC] xen: Annotate printk() as cold


  • To: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Mon, 20 Feb 2023 13:13:25 +0000
  • Authentication-results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Jan Beulich <JBeulich@xxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>
  • Delivery-date: Mon, 20 Feb 2023 13:13:51 +0000
  • Ironport-data: A9a23:O8B7FqmknJLiwnnhr/Sg3RLo5gx1JkRdPkR7XQ2eYbSJt1+Wr1Gzt xIfWTyAaPqJNzSnf4x/Pt+39xsG6MCDz9UxSARspX1hQyMWpZLJC+rCIxarNUt+DCFhoGFPt JxCN4aafKjYaleG+39B55C49SEUOZmgH+a6U6icfHgqH2eIcQ954Tp7gek1n4V0ttawBgKJq LvartbWfVSowFaYCEpNg064gE4p7auaVA8w5ARkPqgR5geGzhH5MbpETU2PByqgKmVrNrbSq 9brlNmR4m7f9hExPdKp+p6TnpoiG+O60aCm0xK6aoD66vRwjnVaPpUTbZLwXXx/mTSR9+2d/ f0W3XCGpaXFCYWX8AgVe0Ew/yiTpsSq8pefSZS0mZT7I0Er7xIAahihZa07FdRwxwp5PY1B3 eAiLm4nKTWyu9ON4Ii4cttU3cEHAuC+aevzulk4pd3YJfMvQJSFSKTW/95Imjw3g6iiH96HO ZBfM2A2Kk2dPVsWYAx/5JEWxY9EglHWdTFCpU3Tjq0w+2XJlyR60aT3McqTcduPLSlQthfG+ zKfoTqoav0cHPK61AWm1XuVvLTSwgbJSYUrErG98vE/1TV/wURMUUZLBDNXu8KRmkO4Ht5SN UEQ0i4vtrQpslymSMHnWB+1q2LCuQQTM/JyOeAn7ACGyoLP/h2UQGMDS1Zpc8c6vcU7QTgr0 F6hnN7zAzFr9rqPRhq16bO8vT60fy8PIgcqZzIATAYDy8nupsc0lB2nZuhkFKm5n9jkAwbay jqBrDU9r7gLhMtN3KK+lXjNjiiwvJHPQkgw7x/OQ2O+xgpjYciuYInA1LTAxa8edsDDFADH5 SVa3ZHEt4jiEK1higSReuNTNvaM1sq0Cx3mgmZdJ8Ik0xqErivLkZ9r3BlyI0JgM8AhcDDvY VPOtQ452KK/LEdGfocsPdvvVp1CIbzIUI28C6uKNoYmjo1ZLlfvwc14WaKHM4kBemAImLp3B 5qUeN3E4Z0yWfU+l2reqwvwPNYWKsECKYH7H8+TI/ePi+D2iJuppVAtaQLmUwzBxPnYyDg5C v4GXydw9z1RUfflfg7c+pMJIFYBIBATXM6p9ZwML7DYf1U+QwnN7sM9Jpt7JuRYc1l9zL+Ur hlRpGcFoLYAuZE3AVrTMS0yAF8edZ1+sWg6LUQR0aWAghAejXKUxP5HLfMfJOB3nNGPONYoF 5Hpje3cWKUQItkGkhxBBaTAQHtKLkry1V/eYHb0OVDSvfdIHmT0xzMtRSO3nAFmM8Z9nZFWT 2GIvu8Dfac+eg==
  • Ironport-hdrordr: A9a23:AjgU5quTNA8YcYQIy3knq9cl7skDTdV00zEX/kB9WHVpm62j5q KTdZEgviMc5wx9ZJhNo7y90dC7MBXhHP1OkOos1NWZPTUO0VHAROtfBO3ZrAEIcBefygcy78 ldmudFebnN5BxB/L/HCDTRKadE/DGkmJrY4tvj8w==
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

There is no such thing as a fastpath with a printk() on it, making printk() an
excellent heuristic for slowpaths.

Net delta is:

  add/remove: 595/2 grow/shrink: 56/762 up/down: 70879/-87331 (-16452)
  Total: Before=4085425, After=4068973, chg -0.40%

because cold functions are optimised differently.  For example, one function
with a particularly large swing is:

  vmcs_dump_vcpu.cold                            -    2172   +2172
  vmcs_dump_vcpu                              7030     408   -6622

with a net delta of 7030 down to 4450.

Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
CC: Wei Liu <wl@xxxxxxx>
CC: Stefano Stabellini <sstabellini@xxxxxxxxxx>
CC: Julien Grall <julien@xxxxxxx>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
CC: Bertrand Marquis <bertrand.marquis@xxxxxxx>

There are other functions which will be good heuristics to annotate, but we
probaby want to collect .cold together in one location rather than having them
spread out across all translation units.
---
 xen/include/xen/lib.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 05ee1e18af6b..11ef287c1ed9 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -115,7 +115,7 @@ debugtrace_printk(const char *fmt, ...) {}
 /* Allows us to use '%p' as general-purpose machine-word format char. */
 #define _p(_x) ((void *)(unsigned long)(_x))
 extern void printk(const char *format, ...)
-    __attribute__ ((format (printf, 1, 2)));
+    __attribute__ ((format (printf, 1, 2), cold));
 
 #define printk_once(fmt, args...)               \
 ({                                              \
-- 
2.30.2




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.