Re: [PATCH v2 0/8] sched/fair: wake_affine improvements

From: Srikar Dronamraju
Date: Thu May 06 2021 - 12:53:53 EST


* Srikar Dronamraju <srikar@xxxxxxxxxxxxxxxxxx> [2021-05-06 22:15:35]:

Mel had asked for additional profile data that could be collected
for idlecore

# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 46 bits physical, 48 bits virtual
CPU(s): 48
On-line CPU(s) list: 0-47
Thread(s) per core: 2
Core(s) per socket: 12
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz
Stepping: 2
CPU MHz: 1200.000
CPU max MHz: 3500.0000
CPU min MHz: 1200.0000
BogoMIPS: 5200.05
Virtualization: VT-x
L1d cache: 768 KiB
L1i cache: 768 KiB
L2 cache: 6 MiB
L3 cache: 60 MiB
NUMA node0 CPU(s): 0-11,24-35
NUMA node1 CPU(s): 12-23,36-47

# cat test.sh
#! /bin/bash
tbench_srv &

#20 iterations of tbench on 48 CPU, 2 node syste
for i in $(seq 1 20); do
#enable schedstat just before tbench
echo 1 | sudo tee /proc/sys/kernel/sched_schedstats
tbench -t 60 48 127.0.0.1
#disable schedstat just before tbench
echo 0 | sudo tee /proc/sys/kernel/sched_schedstats
IDLE_COUNT=$(awk '/nr_idlecore_write/{a+=$NF}END{print a}' /proc/sched_debug)
NR_IDLE_COUNT=$(($IDLE_COUNT-$NR_IDLE_COUNT))
SELECT_COUNT=$(awk '/nr_idlecore_select/{a+=$NF}END{print a}' /proc/sched_debug)
NR_SELECT_COUNT=$(($SELECT_COUNT-$NR_SELECT_COUNT))
# select means we selected an idle core when the preferred CPU is
# busy. write means, unconditional set of idlecore.
# seqno total_updates=select+write select write
echo $i $(($NR_IDLE_COUNT+$NR_SELECT_COUNT)) $NR_SELECT_COUNT $NR_IDLE_COUNT
done
#

a5e13c6df0e4 aka v5.12-rc5
seqno nr_update_idle_core nr_select_idle_core nr_write_idle_core
1 11515 0 11515
2 13439 0 13439
3 42339 0 42339
4 13642 0 13642
5 44770 0 44770
6 32402 0 32402
7 65638 0 65638
8 106601 0 106601
9 99819 0 99819
10 106754 0 106754
11 107899 0 107899
12 112432 0 112432
13 125329 0 125329
14 127363 0 127363
15 133821 0 133821
16 127495 0 127495
17 133957 0 133957
18 185021 0 185021
19 137139 0 137139
20 221413 0 221413

N Min Max Median Avg Stddev
20 11515 221413 107899 97439.4 57524.696

Average of 1353 updates per second.


635bb392f382 aka v5.12-rc5 + patches
seqno nr_update_idle_core nr_select_idle_core nr_write_idle_core
1 2112856 218 2112638
2 1727892 84 1727808
3 3662807 280 3662527
4 3623563 220 3623343
5 4972825 308 4972517
6 3625828 258 3625570
7 6703820 407 6703413
8 5565289 390 5564899
9 8376039 528 8375511
10 6643273 405 6642868
11 10041803 605 10041198
12 8322148 537 8321611
13 11941494 729 11940765
14 10125633 704 10124929
15 12810965 797 12810168
16 12269912 857 12269055
17 14798232 912 14797320
18 14378202 980 14377222
19 15705273 935 15704338
20 16407305 1122 16406183

N Min Max Median Avg Stddev
20 1727892 16407305 8376039 8690757.9 4718172.5

Average of 120704 updates per second which is around 89X times without the
patch.

--
Thanks and Regards
Srikar Dronamraju

---->8----------------------------------------------------8<--------------