c-taylor opened a new issue #7903:
URL: https://github.com/apache/trafficserver/issues/7903


   Whilst chasing down another problem I noticed that the affinity rules are 
'broken'.
   
   ATS version 8.1.2
   
   Issues:
   1. Accept threads
       1. Multiple accept threads are all pushed to same core
       2. Accept thread core is not excluded from other masks and shared with a 
NET thread
   2. AIO threads have no affinity
   3. NET threads are biased toward siblings over ‘proper’ cores
       1. 0,32 are different threads on the same ‘core’
       2. (12-30),(44-63) have nothing allocated
   4. LOG_(FLUSH|PREPROC) may benefit from affinity (especially flush)
   
   This leads to oversubscribed cores and likely explains why I see increased 
handshake std_dev when applied.
   
   
   ----
   
   System:
   1x 32Co (64 HT)
   
   CPU layout:
   0-31 are all unique cores.
   32-63 are siblings of 0-31.
   
   ```grep -H . /sys/devices/system/node/node0/cpu*/topology/core_cpus_list     
     
   /sys/devices/system/node/node0/cpu0/topology/core_cpus_list:0,32
   /sys/devices/system/node/node0/cpu1/topology/core_cpus_list:1,33
   /sys/devices/system/node/node0/cpu10/topology/core_cpus_list:10,42
   /sys/devices/system/node/node0/cpu11/topology/core_cpus_list:11,43
   /sys/devices/system/node/node0/cpu12/topology/core_cpus_list:12,44
   /sys/devices/system/node/node0/cpu13/topology/core_cpus_list:13,45
   /sys/devices/system/node/node0/cpu14/topology/core_cpus_list:14,46
   /sys/devices/system/node/node0/cpu15/topology/core_cpus_list:15,47
   /sys/devices/system/node/node0/cpu16/topology/core_cpus_list:16,48
   /sys/devices/system/node/node0/cpu17/topology/core_cpus_list:17,49
   /sys/devices/system/node/node0/cpu18/topology/core_cpus_list:18,50
   /sys/devices/system/node/node0/cpu19/topology/core_cpus_list:19,51
   /sys/devices/system/node/node0/cpu2/topology/core_cpus_list:2,34
   /sys/devices/system/node/node0/cpu20/topology/core_cpus_list:20,52
   /sys/devices/system/node/node0/cpu21/topology/core_cpus_list:21,53
   /sys/devices/system/node/node0/cpu22/topology/core_cpus_list:22,54
   /sys/devices/system/node/node0/cpu23/topology/core_cpus_list:23,55
   /sys/devices/system/node/node0/cpu24/topology/core_cpus_list:24,56
   /sys/devices/system/node/node0/cpu25/topology/core_cpus_list:25,57
   /sys/devices/system/node/node0/cpu26/topology/core_cpus_list:26,58
   /sys/devices/system/node/node0/cpu27/topology/core_cpus_list:27,59
   /sys/devices/system/node/node0/cpu28/topology/core_cpus_list:28,60
   /sys/devices/system/node/node0/cpu29/topology/core_cpus_list:29,61
   /sys/devices/system/node/node0/cpu3/topology/core_cpus_list:3,35
   /sys/devices/system/node/node0/cpu30/topology/core_cpus_list:30,62
   /sys/devices/system/node/node0/cpu31/topology/core_cpus_list:31,63
   /sys/devices/system/node/node0/cpu32/topology/core_cpus_list:0,32
   /sys/devices/system/node/node0/cpu33/topology/core_cpus_list:1,33
   /sys/devices/system/node/node0/cpu34/topology/core_cpus_list:2,34
   /sys/devices/system/node/node0/cpu35/topology/core_cpus_list:3,35
   /sys/devices/system/node/node0/cpu36/topology/core_cpus_list:4,36
   /sys/devices/system/node/node0/cpu37/topology/core_cpus_list:5,37
   /sys/devices/system/node/node0/cpu38/topology/core_cpus_list:6,38
   /sys/devices/system/node/node0/cpu39/topology/core_cpus_list:7,39
   /sys/devices/system/node/node0/cpu4/topology/core_cpus_list:4,36
   /sys/devices/system/node/node0/cpu40/topology/core_cpus_list:8,40
   /sys/devices/system/node/node0/cpu41/topology/core_cpus_list:9,41
   /sys/devices/system/node/node0/cpu42/topology/core_cpus_list:10,42
   /sys/devices/system/node/node0/cpu43/topology/core_cpus_list:11,43
   /sys/devices/system/node/node0/cpu44/topology/core_cpus_list:12,44
   /sys/devices/system/node/node0/cpu45/topology/core_cpus_list:13,45
   /sys/devices/system/node/node0/cpu46/topology/core_cpus_list:14,46
   /sys/devices/system/node/node0/cpu47/topology/core_cpus_list:15,47
   /sys/devices/system/node/node0/cpu48/topology/core_cpus_list:16,48
   /sys/devices/system/node/node0/cpu49/topology/core_cpus_list:17,49
   /sys/devices/system/node/node0/cpu5/topology/core_cpus_list:5,37
   /sys/devices/system/node/node0/cpu50/topology/core_cpus_list:18,50
   /sys/devices/system/node/node0/cpu51/topology/core_cpus_list:19,51
   /sys/devices/system/node/node0/cpu52/topology/core_cpus_list:20,52
   /sys/devices/system/node/node0/cpu53/topology/core_cpus_list:21,53
   /sys/devices/system/node/node0/cpu54/topology/core_cpus_list:22,54
   /sys/devices/system/node/node0/cpu55/topology/core_cpus_list:23,55
   /sys/devices/system/node/node0/cpu56/topology/core_cpus_list:24,56
   /sys/devices/system/node/node0/cpu57/topology/core_cpus_list:25,57
   /sys/devices/system/node/node0/cpu58/topology/core_cpus_list:26,58
   /sys/devices/system/node/node0/cpu59/topology/core_cpus_list:27,59
   /sys/devices/system/node/node0/cpu6/topology/core_cpus_list:6,38
   /sys/devices/system/node/node0/cpu60/topology/core_cpus_list:28,60
   /sys/devices/system/node/node0/cpu61/topology/core_cpus_list:29,61
   /sys/devices/system/node/node0/cpu62/topology/core_cpus_list:30,62
   /sys/devices/system/node/node0/cpu63/topology/core_cpus_list:31,63
   /sys/devices/system/node/node0/cpu7/topology/core_cpus_list:7,39
   /sys/devices/system/node/node0/cpu8/topology/core_cpus_list:8,40
   /sys/devices/system/node/node0/cpu9/topology/core_cpus_list:9,41```
   
   NUMA config
   ```CONFIG proxy.config.exec_thread.affinity INT 1```
   
   Thread layout
   ```
   8839
   Name:    [TS_MAIN]
   Cpus_allowed_list:    0-63
   8840
   Name:    traffic_server
   Cpus_allowed_list:    0-63
   8847
   Name:    [ET_NET 0]
   Cpus_allowed_list:    0-63
   8848
   Name:    [ET_NET 1]
   Cpus_allowed_list:    0-63
   8849
   Name:    [ET_NET 2]
   Cpus_allowed_list:    0-63
   8850
   Name:    [ET_NET 3]
   Cpus_allowed_list:    0-63
   8851
   Name:    [ET_NET 4]
   Cpus_allowed_list:    0-63
   8852
   Name:    [ET_NET 5]
   Cpus_allowed_list:    0-63
   8853
   Name:    [ET_NET 6]
   Cpus_allowed_list:    0-63
   8854
   Name:    [ET_NET 7]
   Cpus_allowed_list:    0-63
   8855
   Name:    [ET_NET 8]
   Cpus_allowed_list:    0-63
   8856
   Name:    [ET_NET 9]
   Cpus_allowed_list:    0-63
   8857
   Name:    [ET_NET 10]
   Cpus_allowed_list:    0-63
   8858
   Name:    [ET_NET 11]
   Cpus_allowed_list:    0-63
   8859
   Name:    [ET_NET 12]
   Cpus_allowed_list:    0-63
   8860
   Name:    [ET_NET 13]
   Cpus_allowed_list:    0-63
   8861
   Name:    [ET_NET 14]
   Cpus_allowed_list:    0-63
   8862
   Name:    [ET_NET 15]
   Cpus_allowed_list:    0-63
   8863
   Name:    [ET_NET 16]
   Cpus_allowed_list:    0-63
   8864
   Name:    [ET_NET 17]
   Cpus_allowed_list:    0-63
   8865
   Name:    [ET_NET 18]
   Cpus_allowed_list:    0-63
   8866
   Name:    [ET_NET 19]
   Cpus_allowed_list:    0-63
   8867
   Name:    [ET_NET 20]
   Cpus_allowed_list:    0-63
   8868
   Name:    [ET_NET 21]
   Cpus_allowed_list:    0-63
   8869
   Name:    [ET_NET 22]
   Cpus_allowed_list:    0-63
   8870
   Name:    [ET_NET 23]
   Cpus_allowed_list:    0-63
   8871
   Name:    [ET_DNS 0]
   Cpus_allowed_list:    0-63
   8872
   Name:    [LOG_PREPROC 0]
   Cpus_allowed_list:    0-63
   8873
   Name:    [LOG_FLUSH]
   Cpus_allowed_list:    0-63
   8874
   Name:    traffic_server
   Cpus_allowed_list:    0-63
   8888
   Name:    [ET_AIO 0:78]
   Cpus_allowed_list:    0-63
   8889
   Name:    [ET_AIO 1:78]
   Cpus_allowed_list:    0-63
   8890
   Name:    [ET_AIO 2:78]
   Cpus_allowed_list:    0-63
   8891
   Name:    [ET_AIO 3:78]
   Cpus_allowed_list:    0-63
   8892
   Name:    [ET_AIO 4:78]
   Cpus_allowed_list:    0-63
   8893
   Name:    [ET_AIO 5:78]
   Cpus_allowed_list:    0-63
   8894
   Name:    [ET_AIO 6:78]
   Cpus_allowed_list:    0-63
   8896
   Name:    [ET_AIO 7:78]
   Cpus_allowed_list:    0-63
   8897
   Name:    [ET_AIO 0:83]
   Cpus_allowed_list:    0-63
   8898
   Name:    [ET_AIO 1:83]
   Cpus_allowed_list:    0-63
   8899
   Name:    [ET_AIO 2:83]
   Cpus_allowed_list:    0-63
   8900
   Name:    [ET_AIO 3:83]
   Cpus_allowed_list:    0-63
   8901
   Name:    [ET_AIO 4:83]
   Cpus_allowed_list:    0-63
   8902
   Name:    [ET_AIO 5:83]
   Cpus_allowed_list:    0-63
   8903
   Name:    [ET_AIO 6:83]
   Cpus_allowed_list:    0-63
   8904
   Name:    [ET_AIO 7:83]
   Cpus_allowed_list:    0-63
   8905
   Name:    [ET_AIO 0:84]
   Cpus_allowed_list:    0-63
   8906
   Name:    [ET_AIO 1:84]
   Cpus_allowed_list:    0-63
   8907
   Name:    [ET_AIO 2:84]
   Cpus_allowed_list:    0-63
   8908
   Name:    [ET_AIO 3:84]
   Cpus_allowed_list:    0-63
   8909
   Name:    [ET_AIO 4:84]
   Cpus_allowed_list:    0-63
   8910
   Name:    [ET_AIO 5:84]
   Cpus_allowed_list:    0-63
   8911
   Name:    [ET_AIO 6:84]
   Cpus_allowed_list:    0-63
   8912
   Name:    [ET_AIO 7:84]
   Cpus_allowed_list:    0-63
   8913
   Name:    [ET_AIO 0:85]
   Cpus_allowed_list:    0-63
   8914
   Name:    [ET_AIO 1:85]
   Cpus_allowed_list:    0-63
   8915
   Name:    [ET_AIO 2:85]
   Cpus_allowed_list:    0-63
   8916
   Name:    [ET_AIO 3:85]
   Cpus_allowed_list:    0-63
   8917
   Name:    [ET_AIO 4:85]
   Cpus_allowed_list:    0-63
   8918
   Name:    [ET_AIO 5:85]
   Cpus_allowed_list:    0-63
   8919
   Name:    [ET_AIO 6:85]
   Cpus_allowed_list:    0-63
   8920
   Name:    [ET_AIO 7:85]
   Cpus_allowed_list:    0-63
   8921
   Name:    [ET_AIO 0:86]
   Cpus_allowed_list:    0-63
   8922
   Name:    [ET_AIO 1:86]
   Cpus_allowed_list:    0-63
   8923
   Name:    [ET_AIO 2:86]
   Cpus_allowed_list:    0-63
   8924
   Name:    [ET_AIO 3:86]
   Cpus_allowed_list:    0-63
   8925
   Name:    [ET_AIO 4:86]
   Cpus_allowed_list:    0-63
   8926
   Name:    [ET_AIO 5:86]
   Cpus_allowed_list:    0-63
   8927
   Name:    [ET_AIO 6:86]
   Cpus_allowed_list:    0-63
   8928
   Name:    [ET_AIO 7:86]
   Cpus_allowed_list:    0-63
   8929
   Name:    [ET_TASK 0]
   Cpus_allowed_list:    0-63
   8930
   Name:    [ET_TASK 1]
   Cpus_allowed_list:    0-63
   8931
   Name:    [ET_TASK 2]
   Cpus_allowed_list:    0-63
   8933
   Name:    [ET_TASK 3]
   Cpus_allowed_list:    0-63
   8935
   Name:    [ACCEPT 0:80]
   Cpus_allowed_list:    0-63
   8936
   Name:    [ACCEPT 1:80]
   Cpus_allowed_list:    0-63
   8939
   Name:    [ACCEPT 0:80]
   Cpus_allowed_list:    0-63
   8941
   Name:    [ACCEPT 1:80]
   Cpus_allowed_list:    0-63
   8942
   Name:    [ACCEPT 0:443]
   Cpus_allowed_list:    0-63
   8943
   Name:    [ACCEPT 1:443]
   Cpus_allowed_list:    0-63
   8945
   Name:    [ACCEPT 0:443]
   Cpus_allowed_list:    0-63
   8946
   Name:    [ACCEPT 1:443]
   Cpus_allowed_list:    0-63
   ````
   
   Affinity config
   ```CONFIG proxy.config.exec_thread.affinity INT 3```
   
   In the layout below note that:
   * CPU 10 is used by all 8 ACCEPT threads
   * CPU 10 is used by 'ET_NET 20'
   * ET_NET 21 is using '42' the sibling of CPU 10
   * ET_AIO* use mask 0-63
   
   Thread layout
   ```
   46619
   Name:    [TS_MAIN]
   Cpus_allowed_list:    0-63
   46620
   Name:    traffic_server
   Cpus_allowed_list:    0-63
   46627
   Name:    [ET_NET 0]
   Cpus_allowed_list:    0
   46628
   Name:    [ET_NET 1]
   Cpus_allowed_list:    32
   46629
   Name:    [ET_NET 2]
   Cpus_allowed_list:    1
   46630
   Name:    [ET_NET 3]
   Cpus_allowed_list:    33
   46631
   Name:    [ET_NET 4]
   Cpus_allowed_list:    2
   46632
   Name:    [ET_NET 5]
   Cpus_allowed_list:    34
   46633
   Name:    [ET_NET 6]
   Cpus_allowed_list:    3
   46634
   Name:    [ET_NET 7]
   Cpus_allowed_list:    35
   46635
   Name:    [ET_NET 8]
   Cpus_allowed_list:    4
   46636
   Name:    [ET_NET 9]
   Cpus_allowed_list:    36
   46637
   Name:    [ET_NET 10]
   Cpus_allowed_list:    5
   46638
   Name:    [ET_NET 11]
   Cpus_allowed_list:    37
   46639
   Name:    [ET_NET 12]
   Cpus_allowed_list:    6
   46640
   Name:    [ET_NET 13]
   Cpus_allowed_list:    38
   46641
   Name:    [ET_NET 14]
   Cpus_allowed_list:    7
   46642
   Name:    [ET_NET 15]
   Cpus_allowed_list:    39
   46643
   Name:    [ET_NET 16]
   Cpus_allowed_list:    8
   46644
   Name:    [ET_NET 17]
   Cpus_allowed_list:    40
   46645
   Name:    [ET_NET 18]
   Cpus_allowed_list:    9
   46646
   Name:    [ET_NET 19]
   Cpus_allowed_list:    41
   46647
   Name:    [ET_NET 20]
   Cpus_allowed_list:    10
   46648
   Name:    [ET_NET 21]
   Cpus_allowed_list:    42
   46649
   Name:    [ET_NET 22]
   Cpus_allowed_list:    11
   46650
   Name:    [ET_NET 23]
   Cpus_allowed_list:    43
   46651
   Name:    [ET_DNS 0]
   Cpus_allowed_list:    0-63
   46652
   Name:    [LOG_PREPROC 0]
   Cpus_allowed_list:    0-63
   46653
   Name:    [LOG_FLUSH]
   Cpus_allowed_list:    0-63
   46654
   Name:    traffic_server
   Cpus_allowed_list:    0-63
   46666
   Name:    [ET_AIO 0:79]
   Cpus_allowed_list:    0-63
   46667
   Name:    [ET_AIO 1:79]
   Cpus_allowed_list:    0-63
   46668
   Name:    [ET_AIO 2:79]
   Cpus_allowed_list:    0-63
   46669
   Name:    [ET_AIO 3:79]
   Cpus_allowed_list:    0-63
   46670
   Name:    [ET_AIO 4:79]
   Cpus_allowed_list:    0-63
   46671
   Name:    [ET_AIO 5:79]
   Cpus_allowed_list:    0-63
   46672
   Name:    [ET_AIO 6:79]
   Cpus_allowed_list:    0-63
   46673
   Name:    [ET_AIO 7:79]
   Cpus_allowed_list:    0-63
   46674
   Name:    [ET_AIO 0:83]
   Cpus_allowed_list:    0-63
   46675
   Name:    [ET_AIO 1:83]
   Cpus_allowed_list:    0-63
   46676
   Name:    [ET_AIO 2:83]
   Cpus_allowed_list:    0-63
   46677
   Name:    [ET_AIO 3:83]
   Cpus_allowed_list:    0-63
   46678
   Name:    [ET_AIO 4:83]
   Cpus_allowed_list:    0-63
   46679
   Name:    [ET_AIO 5:83]
   Cpus_allowed_list:    0-63
   46680
   Name:    [ET_AIO 6:83]
   Cpus_allowed_list:    0-63
   46681
   Name:    [ET_AIO 7:83]
   Cpus_allowed_list:    0-63
   46682
   Name:    [ET_AIO 0:84]
   Cpus_allowed_list:    0-63
   46683
   Name:    [ET_AIO 1:84]
   Cpus_allowed_list:    0-63
   46684
   Name:    [ET_AIO 2:84]
   Cpus_allowed_list:    0-63
   46685
   Name:    [ET_AIO 3:84]
   Cpus_allowed_list:    0-63
   46686
   Name:    [ET_AIO 4:84]
   Cpus_allowed_list:    0-63
   46687
   Name:    [ET_AIO 5:84]
   Cpus_allowed_list:    0-63
   46688
   Name:    [ET_AIO 6:84]
   Cpus_allowed_list:    0-63
   46689
   Name:    [ET_AIO 7:84]
   Cpus_allowed_list:    0-63
   46691
   Name:    [ET_AIO 0:85]
   Cpus_allowed_list:    0-63
   46692
   Name:    [ET_AIO 1:85]
   Cpus_allowed_list:    0-63
   46693
   Name:    [ET_AIO 2:85]
   Cpus_allowed_list:    0-63
   46694
   Name:    [ET_AIO 3:85]
   Cpus_allowed_list:    0-63
   46695
   Name:    [ET_AIO 4:85]
   Cpus_allowed_list:    0-63
   46696
   Name:    [ET_AIO 5:85]
   Cpus_allowed_list:    0-63
   46697
   Name:    [ET_AIO 6:85]
   Cpus_allowed_list:    0-63
   46698
   Name:    [ET_AIO 7:85]
   Cpus_allowed_list:    0-63
   46699
   Name:    [ET_AIO 0:86]
   Cpus_allowed_list:    0-63
   46700
   Name:    [ET_AIO 1:86]
   Cpus_allowed_list:    0-63
   46701
   Name:    [ET_AIO 2:86]
   Cpus_allowed_list:    0-63
   46702
   Name:    [ET_AIO 3:86]
   Cpus_allowed_list:    0-63
   46703
   Name:    [ET_AIO 4:86]
   Cpus_allowed_list:    0-63
   46704
   Name:    [ET_AIO 5:86]
   Cpus_allowed_list:    0-63
   46705
   Name:    [ET_AIO 6:86]
   Cpus_allowed_list:    0-63
   46706
   Name:    [ET_AIO 7:86]
   Cpus_allowed_list:    0-63
   46708
   Name:    [ET_TASK 0]
   Cpus_allowed_list:    0-63
   46709
   Name:    [ET_TASK 1]
   Cpus_allowed_list:    0-63
   46710
   Name:    [ET_TASK 2]
   Cpus_allowed_list:    0-63
   46711
   Name:    [ET_TASK 3]
   Cpus_allowed_list:    0-63
   46713
   Name:    [ACCEPT 0:80]
   Cpus_allowed_list:    10
   46714
   Name:    [ACCEPT 1:80]
   Cpus_allowed_list:    10
   46715
   Name:    [ACCEPT 0:80]
   Cpus_allowed_list:    10
   46716
   Name:    [ACCEPT 1:80]
   Cpus_allowed_list:    10
   46717
   Name:    [ACCEPT 0:443]
   Cpus_allowed_list:    10
   46718
   Name:    [ACCEPT 1:443]
   Cpus_allowed_list:    10
   46719
   Name:    [ACCEPT 0:443]
   Cpus_allowed_list:    10
   46720
   Name:    [ACCEPT 1:443]
   Cpus_allowed_list:    10
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to