lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Z3QW5aT_6vyHu_cq@localhost.localdomain>
Date: Tue, 31 Dec 2024 17:08:05 +0100
From: Frederic Weisbecker <frederic@...nel.org>
To: Zhongqiu Han <quic_zhonhan@...cinc.com>
Cc: anna-maria@...utronix.de, tglx@...utronix.de,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] timers: Optimize get_timer_cpu_base() to reduce
 potentially redundant per_cpu_ptr() calls

Le Tue, Dec 31, 2024 at 11:01:15PM +0800, Zhongqiu Han a écrit :
> If the timer is deferrable and NO_HZ_COMMON is enabled, the function
> get_timer_cpu_base() will call per_cpu_ptr() twice. Optimize the function
> to avoid potentially redundant per_cpu_ptr() calls.
> 
> One of the call paths of the get_timer_cpu_base() function is through the
> lock_timer_base() function, which contains a loop. Within this loop, the
> get_timer_base() func is called, and in turn, it calls the
> get_timer_cpu_base() function. And in such a path, get_timer_cpu_base is
> a hotspot function. It is called approximately 13,000 times in 12 seconds
> on test x86 KVM machines.
> 
> lock_timer_base(){
>     for(;;) {
>     ...
>     --> get_timer_base() [inline]
>         --> get_timer_cpu_base() [inline]
>     ...
>     }
> }
> 
> With the patch, assembly code(on x86 and ARM64) to be executed in loop is
> reduced. And conducting comparative tests on x86 KVM virtual machines,
> comparison of runtime before and after optimization (in nanoseconds), we
> can see that the distribution of runtime tends to favor smaller time
> intervals.
> 
>       Before                  After
> [0-19]:      0    	[0-19]:      0
> [20-39]:     6    	[20-39]:     1014
> [40-59]:     41   	[40-59]:     2198
> [60-79]:     93   	[60-79]:     2073
> [80-99]:     814  	[80-99]:     3081
> [100-119]:   5262 	[100-119]:   3268
> [120-139]:   4510 	[120-139]:   671
> [140-159]:   2202 	[140-159]:   468
> [160-179]:   81   	[160-179]:   158
> [180-199]:   15   	[180-199]:   160
> [200-219]:   3    	[200-219]:   54
> [220-239]:   2    	[220-239]:   7
> [240-259]:   2    	[240-259]:   3
> [260-279]:   0    	[260-279]:   0
> [280-299]:   0    	[280-299]:   1
> [300-319]:   0    	[300-319]:   0
> total:       13031      total:       13156
> 
> Signed-off-by: Zhongqiu Han <quic_zhonhan@...cinc.com>

Reviewed-by: Frederic Weisbecker <frederic@...nel.org>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ