查看系统信息,命令如下:
$ cat /etc/os-release
输出如下:
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.5 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
命令如下:
$ lscpu
架构: x86_64
CPU 运行模式: 32-bit, 64-bit
字节序: Little Endian
Address sizes: 42 bits physical, 48 bits virtual
CPU: 16
在线 CPU 列表: 0-15
每个核的线程数: 2
每个座的核数: 8
座: 1
NUMA 节点: 1
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 106
型号名称: Intel(R) Xeon(R) Platinum 8378C CPU @ 2.80GHz
步进: 6
CPU MHz: 2799.994
BogoMIPS: 5599.98
超管理器厂商: KVM
虚拟化类型: 完全
L1d 缓存: 384 KiB
L1i 缓存: 256 KiB
L2 缓存: 10 MiB
L3 缓存: 57 MiB
NUMA 节点0 CPU: 0-15
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Vulnerability Retbleed: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1: Mitigation; Load fences, usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Full retpoline, IBPB
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected
标记: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx p
dpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1
sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid
_single ssbd rsb_ctxsw ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm av
x512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1
arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq md_clear spec_ctrl
intel_stibp arch_capabilities
命令如下:
$ free
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 63868488 8172808 5175204 3605336 50520476 51566064
交换: 0 0 0
命令如下:
$ fdisk -l
Disk /dev/sda:100 GiB,107374182400 字节,209715200 个扇区
Disk model: VBS fileIO
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c9af1
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 * 2048 209715166 209713119 100G 83 Linux
Disk /dev/sdc:500 GiB,536870912000 字节,1048576000 个扇区
Disk model: VBS fileIO
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/sdb:1000 GiB,1073741824000 字节,2097152000 个扇区
Disk model: VBS fileIO
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x31b35595
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdb1 2048 2097151999 2097149952 1000G 83 Linux
Disk /dev/sdd:1000 GiB,1073741824000 字节,2097152000 个扇区
Disk model: VBS fileIO
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1735b494
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdd1 2048 2097151999 2097149952 1000G 83 Linux
Disk /dev/sde:1000 GiB,1073741824000 字节,2097152000 个扇区
Disk model: VBS fileIO
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0a456c6e
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sde1 2048 2097151999 2097149952 1000G 83 Linux
命令如下:
$ top
top - 20:12:46 up 141 days, 5:05, 2 users, load average: 4.54, 5.38, 6.20
任务: 15 total, 1 running, 14 sleeping, 0 stopped, 0 zombie
%Cpu(s): 17.1 us, 16.8 sy, 0.0 ni, 66.0 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
MiB Mem : 62371.6 total, 4792.0 free, 8237.0 used, 49342.5 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 50098.7 avail Mem
进程 USER PR NI VIRT RES SHR %CPU %MEM TIME+ COMMAND
1 root 20 0 4356 2048 1420 S 0.7 0.0 0:00.72 .init.sh
127 root 20 0 12172 1556 632 S 0.0 0.0 0:00.00 sshd
151 root 20 0 709928 38756 16188 S 0.0 0.1 0:00.39 node
157 root 20 0 10.7g 44356 18584 S 0.0 0.1 0:01.04 node
242 root 20 0 926092 66384 17992 S 0.0 0.1 0:03.34 node
327 root 20 0 13900 5696 4240 S 0.0 0.0 0:00.01 sshd
329 root 20 0 15244 5440 1960 S 0.0 0.0 0:00.03 bash
436 root 20 0 623112 26124 15452 S 0.0 0.0 0:00.12 node
615 root 20 0 702852 21200 12872 S 0.0 0.0 0:00.10 node
628 root 20 0 943508 71280 18224 S 0.0 0.1 0:01.31 node
862 root 20 0 590856 23724 12632 S 0.0 0.0 0:00.10 node
1015 root 20 0 13892 5692 4240 S 0.0 0.0 0:00.01 sshd
1017 root 20 0 15244 5528 2040 S 0.0 0.0 0:00.05 bash
9740 root 20 0 14144 2100 1492 R 0.0 0.0 0:00.00 top
9939 root 20 0 2500 376 312 S 0.0 0.0 0:00.00 sleep
我们利用 sysbench 工具对系统进行跑分测试,首先我们安装 sysbench 工具,然后对cpu 进行跑分测试。
apt update
apt install sysbench
sysbench cpu run
sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Prime numbers limit: 10000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 2392.49
General statistics:
total time: 10.0268s
total number of events: 23993
Latency (ms):
min: 0.34
avg: 0.42
max: 100.41
95th percentile: 0.35
sum: 10021.26
Threads fairness:
events (avg/stddev): 23993.0000/0.00
execution time (avg/stddev): 10.0213/0.00
单线程性能: 测试使用了一个线程,这意味着所有的负载都由一个线程承担。在这种模式下,CPU速度为每秒2392.49个事件,这对于单线程来说是一个相对较高的处理速度。
总体性能: 在10.0268秒内,系统总共处理了23993个事件,这表明系统在单线程模式下有较高的吞吐量。
延迟: 延迟方面,平均延迟为0.42毫秒,最小延迟为0.34毫秒,最大延迟为100.41毫秒。这些数据显示系统在处理请求时,大部分时间的响应速度较快,但偶尔会出现较高的延迟。
延迟分布: 95%的事件处理延迟在0.35毫秒以下,这表明大部分事件的响应时间非常快。
线程公平性: 线程公平性统计显示,每个线程平均处理了23993个事件,执行时间也非常均衡,没有明显的性能差异。
系统稳定性: 从标准差为0可以看出,系统在单线程模式下的性能非常稳定,没有出现大的波动。
潜在问题: 虽然单线程性能看起来不错,但最大延迟达到了100.41毫秒,这可能是系统中的一个潜在瓶颈。在实际应用中,这样的延迟可能会影响用户体验。
sysbench --threads=48 memory run
sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 48
Initializing random number generator from current time
Running memory speed test with the following options:
block size: 1KiB
total size: 102400MiB
operation: write
scope: global
Initializing worker threads...
Threads started!
Total operations: 11589432 (1157101.85 per second)
11317.80 MiB transferred (1129.98 MiB/sec)
General statistics:
total time: 10.0144s
total number of events: 11589432
Latency (ms):
min: 0.00
avg: 0.03
max: 2097.05
95th percentile: 0.00
sum: 371245.84
Threads fairness:
events (avg/stddev): 241446.5000/236613.58
execution time (avg/stddev): 7.7343/0.94
Linux有三个标准流,stdin 输入流,stdout 标准输出流,stderr 标准错误输出流
echo "this will get output to the file and not to stdout"
该命令会直接显示在终端上,如下所示。
> echo "this will get output to the file and not to stdout"
this will get output to the file and not to stdout
echo "this will get output to the file and not to stdout" 1> new-file.txt
我们可以利用 1>
重定向这个标准流到 new-file.txt
文件中,此时在终端上没有任何信息输出。
ls -lsah 1> ls.txt
ls -lsah 1>> ls.txt
此外,1>>
可以追加内容至 ls.txt
中去。
第一次运行 ls -lsah 1> ls.txt
命令时,ls.txt 内容如下:
总用量 40K
4.0K drwxr-xr-x 3 root root 4.0K 12月 27 22:12 .
8.0K drwx------ 1 root root 4.0K 12月 27 22:07 ..
4.0K drwxr-xr-x 8 root root 4.0K 12月 27 21:02 .git
4.0K -rw-r--r-- 1 root root 272 12月 27 20:10 .gitignore
4.0K -rw-r--r-- 1 root root 36 12月 27 20:10 index.js
4.0K -rw-r--r-- 1 root root 292 12月 27 20:10 .inscode
4.0K -rw-r--r-- 1 root root 67 12月 27 20:10 inscode.nix
0 -rw-r--r-- 1 root root 0 12月 27 22:12 ls.txt
4.0K -rw-r--r-- 1 root root 51 12月 27 22:08 new-file.txt
4.0K -rw-r--r-- 1 root root 364 12月 27 20:10 package.json
第二次运行内容如下:
总用量 40K
4.0K drwxr-xr-x 3 root root 4.0K 12月 27 22:12 .
8.0K drwx------ 1 root root 4.0K 12月 27 22:07 ..
4.0K drwxr-xr-x 8 root root 4.0K 12月 27 21:02 .git
4.0K -rw-r--r-- 1 root root 272 12月 27 20:10 .gitignore
4.0K -rw-r--r-- 1 root root 36 12月 27 20:10 index.js
4.0K -rw-r--r-- 1 root root 292 12月 27 20:10 .inscode
4.0K -rw-r--r-- 1 root root 67 12月 27 20:10 inscode.nix
0 -rw-r--r-- 1 root root 0 12月 27 22:12 ls.txt
4.0K -rw-r--r-- 1 root root 51 12月 27 22:08 new-file.txt
4.0K -rw-r--r-- 1 root root 364 12月 27 20:10 package.json
总用量 44K
4.0K drwxr-xr-x 3 root root 4.0K 12月 27 22:12 .
8.0K drwx------ 1 root root 4.0K 12月 27 22:07 ..
4.0K drwxr-xr-x 8 root root 4.0K 12月 27 21:02 .git
4.0K -rw-r--r-- 1 root root 272 12月 27 20:10 .gitignore
4.0K -rw-r--r-- 1 root root 36 12月 27 20:10 index.js
4.0K -rw-r--r-- 1 root root 292 12月 27 20:10 .inscode
4.0K -rw-r--r-- 1 root root 67 12月 27 20:10 inscode.nix
4.0K -rw-r--r-- 1 root root 578 12月 27 22:12 ls.txt
4.0K -rw-r--r-- 1 root root 51 12月 27 22:08 new-file.txt
4.0K -rw-r--r-- 1 root root 364 12月 27 20:10 package.json
显而易见,1>>
可以追加内容。
ps aux | grep "ps aux"
这条命令表示列出所有正在运行的进程,通过|
管道把结果输入到 grep 中,最终找出含 “ps aux” 字符串的进程。
我们和流操作对比一下:
> ps aux > t4.txt
> grep "ps aux" < t4.txt
root 25431 0.0 0.0 13876 1596 pts/1 R+ 22:30 0:00 ps aux
不难看出管道比流的重定向更简洁。