У меня Ryzen 3950X, и я знаю, что он выглядит так:
Итак, мои 16 ядер разделены на 4 группы по 4 (CCX-es), и эти группы разделены на 2 большие группы (CCD-ы).
Насколько я понимаю, все ядра внутри CCX могут довольно быстро связываться друг с другом, поскольку они совместно используют память L3. Ядра в двух разных CCX могут по-прежнему обмениваться данными довольно быстро, пока они находятся в одном CDD, поскольку CCX-ы напрямую подключены через бесконечную матрицу. Однако ядра в разных ПЗС-матрицах обмениваются данными медленнее всего, так как им приходится использовать «более длинный маршрут» для связи. (Я мог бы придумывать части этого, поправьте меня, если я ошибаюсь.)
Я хочу играть в игры на виртуальной машине, поэтому мне, вероятно, следует, по крайней мере, убедиться, что все ядра ЦП, которые я сопоставляю с виртуальной машиной, находятся на одной ПЗС. Как я могу понять это в Linux?
Это результат lscpu -e
на моей машине:
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
0 0 0 0 0:0:0:0 yes 3500.0000 2200.0000
1 0 0 1 1:1:1:0 yes 3500.0000 2200.0000
2 0 0 2 2:2:2:0 yes 3500.0000 2200.0000
3 0 0 3 3:3:3:0 yes 3500.0000 2200.0000
4 0 0 4 4:4:4:1 yes 3500.0000 2200.0000
5 0 0 5 5:5:5:1 yes 3500.0000 2200.0000
6 0 0 6 6:6:6:1 yes 3500.0000 2200.0000
7 0 0 7 7:7:7:1 yes 3500.0000 2200.0000
8 0 0 8 8:8:8:2 yes 3500.0000 2200.0000
9 0 0 9 9:9:9:2 yes 3500.0000 2200.0000
10 0 0 10 10:10:10:2 yes 3500.0000 2200.0000
11 0 0 11 11:11:11:2 yes 3500.0000 2200.0000
12 0 0 12 12:12:12:3 yes 3500.0000 2200.0000
13 0 0 13 13:13:13:3 yes 3500.0000 2200.0000
14 0 0 14 14:14:14:3 yes 3500.0000 2200.0000
15 0 0 15 15:15:15:3 yes 3500.0000 2200.0000
16 0 0 0 0:0:0:0 yes 3500.0000 2200.0000
17 0 0 1 1:1:1:0 yes 3500.0000 2200.0000
18 0 0 2 2:2:2:0 yes 3500.0000 2200.0000
19 0 0 3 3:3:3:0 yes 3500.0000 2200.0000
20 0 0 4 4:4:4:1 yes 3500.0000 2200.0000
21 0 0 5 5:5:5:1 yes 3500.0000 2200.0000
22 0 0 6 6:6:6:1 yes 3500.0000 2200.0000
23 0 0 7 7:7:7:1 yes 3500.0000 2200.0000
24 0 0 8 8:8:8:2 yes 3500.0000 2200.0000
25 0 0 9 9:9:9:2 yes 3500.0000 2200.0000
26 0 0 10 10:10:10:2 yes 3500.0000 2200.0000
27 0 0 11 11:11:11:2 yes 3500.0000 2200.0000
28 0 0 12 12:12:12:3 yes 3500.0000 2200.0000
29 0 0 13 13:13:13:3 yes 3500.0000 2200.0000
30 0 0 14 14:14:14:3 yes 3500.0000 2200.0000
31 0 0 15 15:15:15:3 yes 3500.0000 2200.0000
Итак, основываясь на идентификаторе памяти L3, я могу узнать, какие ядра находятся на одном CCX, но я до сих пор не знаю, какие из них находятся на одной CCD.
lstopo
также показывает только 4 CCX-матрицы, а не CCD-матрицы.
Есть ли способ в этом разобраться? И имеет ли вообще какое-то значение для задержки, если ядра находятся на разных ПЗС-матрицах?