Linux Shell脚本查看NUMA信息

这篇文章主要介绍了Linux Shell脚本查看NUMA信息,本文直接给出脚本实现代码,需要的朋友可以参考下

Nova在NFV场景下会提供NUMA相关高级特性,这里提供一个脚本查看计算节点的NUMA相关信息。

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

#!/bin/bash

function get_nr_processor()

{

grep '^processor' /proc/cpuinfo | wc -l

}

function get_nr_socket()

{

grep 'physical id' /proc/cpuinfo | awk -F: '{

print $2 | "sort -un"}' | wc -l

}

function get_nr_siblings()

{

grep 'siblings' /proc/cpuinfo | awk -F: '{

print $2 | "sort -un"}'

}

function get_nr_cores_of_socket()

{

grep 'cpu cores' /proc/cpuinfo | awk -F: '{

print $2 | "sort -un"}'

}

echo '===== CPU Topology Table ====='

echo

echo '+--------------+---------+-----------+'

echo '| Processor ID | Core ID | Socket ID |'

echo '+--------------+---------+-----------+'

while read line; do

if [ -z "$line" ]; then

printf '| %-12s | %-7s | %-9s |/n' $p_id $c_id $s_id

echo '+--------------+---------+-----------+'

continue

fi

if echo "$line" | grep -q "^processor"; then

p_id=`echo "$line" | awk -F: '{print $2}' | tr -d ' '`

fi

if echo "$line" | grep -q "^core id"; then

c_id=`echo "$line" | awk -F: '{print $2}' | tr -d ' '`

fi

if echo "$line" | grep -q "^physical id"; then

s_id=`echo "$line" | awk -F: '{print $2}' | tr -d ' '`

fi

done < /proc/cpuinfo

echo

awk -F: '{

if ($1 ~ /processor/) {

gsub(/ /,"",$2);

p_id=$2;

} else if ($1 ~ /physical id/){

gsub(/ /,"",$2);

s_id=$2;

arr[s_id]=arr[s_id] " " p_id

}

}

END{

for (i in arr)

printf "Socket %s:%s/n", i, arr[i];

}' /proc/cpuinfo

echo

echo '===== CPU Info Summary ====='

echo

nr_processor=`get_nr_processor`

echo "Logical processors: $nr_processor"

nr_socket=`get_nr_socket`

echo "Physical socket: $nr_socket"

nr_siblings=`get_nr_siblings`

echo "Siblings in one socket: $nr_siblings"

nr_cores=`get_nr_cores_of_socket`

echo "Cores in one socket: $nr_cores"

let nr_cores*=nr_socket

echo "Cores in total: $nr_cores"

if [ "$nr_cores" = "$nr_processor" ]; then

echo "Hyper-Threading: off"

else

echo "Hyper-Threading: on"

fi

echo

echo '===== END ====='

查询结果示例:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

===== CPU Topology Table =====

+--------------+---------+-----------+

| Processor ID | Core ID | Socket ID |

+--------------+---------+-----------+

| 0 | 0 | 1 |

+--------------+---------+-----------+

| 1 | 1 | 1 |

+--------------+---------+-----------+

| 2 | 9 | 1 |

+--------------+---------+-----------+

| 3 | 10 | 1 |

+--------------+---------+-----------+

| 4 | 0 | 0 |

+--------------+---------+-----------+

| 5 | 1 | 0 |

+--------------+---------+-----------+

| 6 | 9 | 0 |

+--------------+---------+-----------+

| 7 | 10 | 0 |

+--------------+---------+-----------+

| 8 | 0 | 1 |

+--------------+---------+-----------+

| 9 | 1 | 1 |

+--------------+---------+-----------+

| 10 | 9 | 1 |

+--------------+---------+-----------+

| 11 | 10 | 1 |

+--------------+---------+-----------+

| 12 | 0 | 0 |

+--------------+---------+-----------+

| 13 | 1 | 0 |

+--------------+---------+-----------+

| 14 | 9 | 0 |

+--------------+---------+-----------+

| 15 | 10 | 0 |

+--------------+---------+-----------+

Socket 0: 4 5 6 7 12 13 14 15

Socket 1: 0 1 2 3 8 9 10 11

===== CPU Info Summary =====

Logical processors: 16

Physical socket: 2

Siblings in one socket: 8

Cores in one socket: 4

Cores in total: 8

Hyper-Threading: on

===== END =====

(0)

相关推荐

  • Linux shell脚本基础学习详细介绍(完整版)

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头、注释、变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提。 1. Li ...

  • Linux Shell脚本系列教程(七):脚本调试

    这篇文章主要介绍了Linux Shell脚本系列教程(七):脚本调试,本文讲解了Bash内建调试功能和自定义调试功能等内容,需要的朋友可以参考下 一、调试脚本 调试功能是每一种编程语言都应该实现的重要 ...

  • Linux Shell脚本系列教程(三):变量和环境变量

    这篇文章主要介绍了Linux Shell脚本系列教程(三):变量和环境变量,本文讲解了普通变量、获取字符串的长度、环境变量等内容,需要的朋友可以参考下 一、玩转变量和环境变量 变量是任何一种编程语言都 ...

  • Linux Shell脚本系列教程(二):终端打印命令详解

    这篇文章主要介绍了Linux Shell脚本系列教程(二):终端打印命令详解,本文着重讲解了echo终端打英printf终端打印两个打印出输出命令,需要的朋友可以参考下 终端打印 终端是交互式工具,用 ...

  • Linux shell脚本中连接字符串的方法

    这篇文章主要介绍了Linux shell脚本中连接字符串的方法,大家参考使用吧 如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1 ...

  • Linux Shell脚本系列教程(六):数组和关联数组

    这篇文章主要介绍了Linux Shell脚本系列教程(六):数组和关联数组,本文讲解了什么是数组和关联数组、定义打印普通数组、定义打印关联数组等内容,需要的朋友可以参考下 一、数组和关联数组 数组是S ...

  • Linux Shell脚本系列教程(五):数学运算

    这篇文章主要介绍了Linux Shell脚本系列教程(五):数学运算,本文讲解了使用let、(())和[]进行算术运算、使用expr进行算术运算、使用bc进行算术运算三种方法,需要的朋友可以参考下 在 ...

  • Linux Shell脚本系列教程(四):使用函数添加环境变量

    这篇文章主要介绍了Linux Shell脚本系列教程(四):使用函数添加环境变量,本文对环境变量的一知识作了介绍,并给出普通添加环境变量和使用函数添加环境变量的方法,需要的朋友可以参考下 一、简介 环 ...

  • Linux Shell脚本系列教程(一):Shell入门

    这篇文章主要介绍了Linux Shell脚本系列教程(一):Shell入门,本文讲解了Shell简介、Shell基本操作、如何打开Shell终端、Shell脚本的概念、如何运行Shell脚本、Shel ...