实验环境:
- Linux 5.19.13-arch1-1
- konsole 22.08.2
1. 简介
计算机主要硬件:主板、CPU、GPU、内存、硬盘、声卡、显卡、电源、鼠标、屏幕 等,这里只讨论普通计算机的硬件管理,不包括路由器、交换机等硬件
Linux 中一切都是文件,包括所有的硬件,硬件以文件的形式保存在系统中(/dev),但管理硬件的时候,一般不会去修改硬件文件,而是修改 /etc 下的配置文件
有命令可以使用时,不建议去修改配置文件
修改配置文件,有时候配置错了一点东西,轻则可能导致系统无法启动某服务,重则整个服务瘫痪;而使用命令则可以避免这种人为错误
每个硬件的组成都很复杂,Linux 下的电源管理涉及到供电(Power Supply)、充电(Charger)、时钟(Clock)、频率(Frequency)、电压(Voltage)、睡眠/唤醒(Suspend/Resume)等方面,不可能在这里讲述得过于详细,所以这篇文章只是部分硬件的简单配置。
2. CPU
CPU 是计算机的大脑,大部分的运算都由 CPU 来完成。CPU 的一个重要指标是频率,当代计算机 CPU 大多都有功耗(频率)控制,Linux中,内核的开发者定义了一套框架模型(CPU Freq系统)来完成 CPU 频率动态调整这一目的,而基于 CPU Freq系统,开发者开发了更高级的 cpupower、cpufrequtils 工具,使用这两款工具的命令能更好地控制 CPU
我只查到了 cpupower 和 cpufrequtils 两个软件,如果有更多的,麻烦评论告诉我
基于 CPU Freq系统,Linux 中有以下六种调频策略,有些文档里有更多的调频策略,但本文章基于本地实验系统 Arch Linux,使用 cpupower 工具,其它策略自动忽略
调速器 | 描述 |
---|---|
performance | CPU 频率固定在最大频率 |
powersave | CPU 频率固定在最小频率 |
userspace | 运行于用户指定的频率 |
ondemand | 按需快速动态调整CPU频率, 一有cpu计算量的任务,就会立即达到最大频率运行,空闲时间增加就降低频率 |
conservative | 按需快速动态调整CPU频率, 比 ondemand 的调整更保守 |
schedutil | 基于调度程序调整 CPU 频率。 |
1. cat /proc/cpuinfo
# /proc 是虚拟的文件系统,也是系统内核的镜像,存储当前内核运行状态的一系列文件
# 可以通过查询 /proc 下的文件 查看、理解 内核是怎么监管系统的
# 查看 CPU(info 文件内容在系统运行时不断增长,重启电脑则删除整个文件)
cat /proc/cpuinfo
2. lscpu
# 用于显示 CPU 架构的有关信息
# lscpu 命令从 sysfs 和 /proc/cpuinfo 收集 CPU 体系结构信息
# 语法格式:
lscpu [参数]
###
lscpu # 不添加选项比较常用
### 选项
-a 打印在线和离线的CPU
-b 仅打印在线CPU
-c 仅打印离线CPU
###
# 查看当前 CPU 所使用的策略
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# 查看当前 CPU 频率
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
# 如果需要实时监测 CPU 的频率,运行以下命令:
watch grep \"cpu MHz\" /proc/cpuinfo
# 查看当前 CPU 可以使用的策略
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
# 查看当前 CPU 采样率(采样率决定调速器多久进行一次检查并调整CPU频率)
cat /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
cppupower
cpupower 的配置文件位于 /etc/default/cpupower
。此配置文件由 /usr/lib/systemd/scripts/cpupower
中的 bash 脚本读取,而该脚本由 systemd 通过 cpupower.service
激活。若要在计算机启动时自动启动 cpupower
# cpupower 语法格式
# 操作对象:表示需要操作的内核,默认"-c 0","-c all"表示对当前CPU所有内核进行操作
# frequency-info 表示只是查看信息,frequency-set 表示将对 CPU 进行设置
# 操作:当前一个参数是 frequency-info 时,没有操作参数;当前一参数为
# frequency-set 时,可以使用"set 策略"或"set 指定频率"来操作内核
cpupower [操作对象] <frequency-info / frequency-set> [操作]
1. cpupower frequency-info
# 用于查看 CPU 核心频率信息
# 语法格式
cpupower [选项] frequency-info
### 例子
# 查看 CPU 主频信息,默认是"-c 0"
cpupower frequency-info
# 查看当前 CPU 的全部主频信息
cpupower -c all frequency-info
2. cpupower frequency-set
# 用于设置 CPU 频率 或 所使用的策略
# 语法格式
cpupower [选项] frequency-info [参数]
# 设置当前 CPU 为节能模式
cpupower -c all frequency-set -g powersave
# 运行以下命令设置最大时钟频率(clock_freq 为时钟频率,单位为:GHz, MHz):
cpupower frequency-set -u clock_freq
# 运行以下命令设置最小时钟频率:
cpupower frequency-set -d clock_freq
# 运行以下命令设置运行于指定频率:
cpupower frequency-set -f clock_freq
# 如果需要指定特定的调速器,运行以下命令:
cpupower frequency-set -g governor
# 设置 cpupower 开机自启
systemctl enable cpupower.service
cpufrequtils
略
2. GPU
GPU
# 查看电脑硬件——GPU
lspci
lspci | grep -i nvidia # 英伟达显卡
nvidia-smi # 英伟达显卡
2. 硬盘
即使是到了现在,SmartMontools
依旧是一款比较流行的硬盘检测工具
# Arch 上安装 SmartMontools
yay -q smartmontools
# 其它,前往官网下载相应的软件包
# https://sourceforge.net/projects/smartmontools/files/smartmontools/7.3/smartmontools-7.3.tar.gz/download
# 下载后进行解压和安装,注意不要直接复制下面的命令,可能版本不同
wget https://sourceforge.net/projects/smartmontools/files/smartmontools/7.3/smartmontools-7.3.tar.gz/download
tar zxvf smartmontools-7.3.tar.gz
cd smartmontools-7.3
./configure
make
sudo make install
# 开始进行检测.`-i`测试主办和硬盘是否支持 smart 技术,能打印出一堆东西就成功了
sudo smartctl -i /dev/sda
sudo smartctl -i /dev/sda1
# 选项`-A`显示的是检测道德硬盘数据部分
sudo smartctl -A /dev/sda1
查看硬盘的数据、类型等信息
# 查看电脑硬件——硬盘
lsblk
df -a # 查看使用率
df /dev/sda1 # 查看单一分区的使用率
sudo fdisk -l # 同查看,信息更详细
# 查看某个文件使用的数据块
du # disk usage,逐级进入指定目录
3. 内存
# 监控 真实内存 使用情况
free
# 监控 虚拟 内存使用情况(Virtual Meomory Statistics)
vmstar
# 如果还想检测得更仔细,可以用第三方工具,书上推荐:memtest86
4. 磁盘管理
fdisk cfdisk lsblk
mount umount findmnt blkid partx /etc/fstab
df mkfs mkfswap fsck vmstat
iostat mkisofs syncdd
硬盘命名方式
/dev/sda
: sd 指 SCSI 硬盘,用a,b,c,d,e等代表第几块
/dev/hda
: hd 指 IDE 硬盘,...
/dev/sda1
: 最后的数字是指在这块硬盘上的第几个分区
配置硬盘
# /etc/fstab 用于定义磁盘分区,各种其他块设备或远程文件系统应如何装入文件系统
cat /etc/fstab # 查看本机的fstab文件
### 部分显示信息
# /dev/sda1
UUID=d3ea83a0-a67a-44ed-9020-3ad52fce3544 /home ext4 rw,relatime 0 2
其基本书写规则为:
<file system> <dir> <type> <options> <dump> <pass>
# 更详细的介绍请查看:
# https://wiki.archlinux.org/title/Fstab_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
# 为设备持久化命名,最好使用 UUID,这是每个硬盘分区的唯一名字
lsblk -f # 查看磁盘设备的 UUID
blkid /dev/sda1 # 查看磁盘设备的 UUID
为系统永久添加一个硬盘
# 检查系统已添加但未挂载的硬盘
sudo fdisk -l # 假设 /dev/sdb 未挂载
# 转化硬盘类型
parted /dev/sdb
(parted)mktable #输入mktable
New disk label type? gpt #输入gpt 将磁盘类型转换为gpt 如磁盘有数据会警告,输入yes即可
quit
# 划分分区并选定文件系统
sudo cfdisk /dev/sdb
# cfdisk 是一个好用的半图形化的程序,这里假设将整个硬盘划分为一个分区 /dev/sdb1
# 根据需求划分分区,type 一般为 Linux file system
# 格式化硬盘,一般可选 ext4,如果有需求可以选其他
mkfs.etx4 /dev/sdb1
# 建个目录,作为挂载点
mkdir /home/guyan/movic
mount /dev/sdb1 /home/guyan/movic
# 查看硬盘的UUID
blkid /dev/sdb1
# 修改 /etc/fstab,参考上面的 配置硬盘
sudo vim /etc/fstab
### 例如,添加
# /dev/sdb1
UUID=cb279989-9ef6-4cb9-ab31-656c18f40849 /home/guyan/movic ext4 rw,relatime 0 2
5. 优化系统硬盘
-
删除无用文件
-
整理磁盘碎片。最好的方法是做一个完整的备份之后,重新格式化分区
-
调整硬盘参数。在 RedHat 上可以试试 hdparm,但无论是服务器还是本机,我的建议都是:没有保存重要 文件的条件下,不要尝试
6. 网卡
这部分内容放在 第十章网络服务中讲述
参考
标签:cpupower,管理,dev,硬件,frequency,频率,Linux,CPU,硬盘 From: https://www.cnblogs.com/GuYan-Dragon/p/16844249.html