linux性能调优干货,【干货分享】详解Linux性能调优之tuned特性

linux性能调优干货,【干货分享】详解Linux性能调优之tuned特性

tuned简介

对普通用户而言,Linux应用环境优化是比较困难的。领域多,范围广:CPU、存储、缓存策略、内存管理等涉及的参数。Linux内部虽然有默认设置值,可以应对大多数的情况场景,但是针对一些特殊场景,例如高性能、高并发和高可用的系统,就需要我们进行调整。本文介绍的tuned特性就是目前Linux系统上常用的一种调优特性。

tuned特性由tuned和tuned-adm两个程序组成。其中 tuned是服务端程序,用来监控和收集系统各个组件的数据;tuned-adm是客户端程序,用命令行的方式管理和配置 tuned。

tuned提供了一些预先配置的优化策略(profile)可供直接使用,比如:虚拟机-主机、虚拟机-客户机、节能等优化场景。当然不同的系统和应用场景有不同的优化方案,tuned预先配置的优化策略不是总能满足要求,因此tuned还允许用户自己创建和定制新的调优方案。

中移软件的BC-Linux操作系统目前就支持tuned特性并使用其进行调优。

tuned的子系统

tuned子系统是相互独立运行的,合作组成tuned的调优方案。每个子系统可以支持多个设备(每台设备可能有多个cpu、网卡等设备),并且每个设备可以使用单独的实例控制。

CPU

CPU子系统主要实现两个功能:

1. 设置CPU governor的值为配置文件中 “governor” 参数的值;CPU governor是内核的CPU频率管理器,通过参数来对CPU的频率进行调节,主要是以下几种参数:

www.zeeklog.com  - linux性能调优干货,【干货分享】详解Linux性能调优之tuned特性

CPU 的governor可以使用如下命令查看:

# cpupower --cpu all frequency-info --governors

查看目前支持的governor

# cpupower --cpu all frequency-info --policy

查看正在使用的governor

2. 根据CPU的负载动态的调节PM QoS CPU DMA延迟。当CPU负载低于 “load_threshold” 参数时,延迟被设为 “latency_high” 参数的数值,否则的话设为 “latency_low”。如果不希望动态调节延迟,可以通过设置 “force_latency” 参数,将延迟固定。

VM

内存子系统主要调节系统的内存参数。

根据 “transparent_hugepages” 参数的值设置huge page(巨页)功能;

www.zeeklog.com  - linux性能调优干货,【干货分享】详解Linux性能调优之tuned特性

# cat /sys/kernel/mm/transparent_hugepage/enabled

查看系统的巨页配置

此外内存子系统还可以设置系统参数,也就是“/proc/sys/vm”路径下的内存参数,比较常用的有以下几种,其余的也可根据需要配置:

vm.dirty_background_ratio: 设置 dirty pages 开始后台回写时的百分比

vm.dirty_ratio: 设置 dirty pages 开始回写时的百分比

vm.swappiness: 控制从物理内存换出到交换空间的相对权重,取值为0到100,更低的值导致避免交换,而更高的值导致尝试使用交换空间

DISK

www.zeeklog.com  - linux性能调优干货,【干货分享】详解Linux性能调优之tuned特性

# cat /sys/block/sda/queue/scheduler

查看系统的IO调度算法

磁盘子系统也可以调节内核的磁盘参数,也就是“/proc/sys/kernel”路径下的参数,比较常用的是以下几种:

kernel.sched_min_granularity_ns: 针对CPU 计算密集型任务设置调度器的最小抢占粒度

kernel.sched_wakeup_granularity_ns: 设置调度器的唤醒粒度,这将延迟抢占效应,并减少过度调度

kernel.sched_migration_cost_ns: 调度器认为迁移的进程“cache hot”因而更少可能被重新迁移的总时间

此外磁盘子系统还可以配置磁盘电源策略,通过ALPM磁盘电源管理工具实现,对应 “alpm” 参数,用于降低磁盘功耗;也可以动态调整先进电源管理和磁盘spindown的超时时间。

NET

网络子系统主要调节网络性能和功耗:

1. 可以调节网络参数,常用的有以下几种:

www.zeeklog.com  - linux性能调优干货,【干货分享】详解Linux性能调优之tuned特性

2. 根据网口的使用情况动态调整网口的速度,默认网口会一直保持在高速运行,可以降低功耗;

3. 根据 “wake-on-lan” 参数,配置wake-on-lan功能。Wake-On-LAN简称WOL,是一种电源管理功能,允许通过网络将设备从待机或休眠模式中唤醒。

其他子系统

sysctl

子系统主要使用sysctl工具来进行系统配置,相当于修改sysctl.conf配置文件。语法格式是 “name=value” ,name就是sysctl工具的条目,value则是配置参数。

eeepc_she

根据CPU负载动态调节FSB的频率(FSB--前端总线,是连接CPU和北桥芯片的总线),可以降低功耗。

usb

根据 “autosuspend” 参数设置USB设备自动挂起的超时时间,0表示关闭USB设备自动挂起。

audio

根据 “timeout” 参数设置音频解码设备的自动挂起超时时间,0表示关闭自动挂起。

mounts

根据“disable_barriers”参数开/关mounts的barrier特性,打开barrier特性次文件系统日志记录会更加可靠,但是会降低一些性能。

sysfs

通过设置sysfs路径下的相关参数进行系统性能调节,语法格式是 “name=value” ,name就是sysfs路径的条目,value则是配置参数。

tuned提供的profiles

tuned会预先配置的一些优化策略,下面依次介绍下:(基于BCLinux7.3系统自带的tuned 2.7.1版本,不同的版本可能会有差别,具体可以查看 /usr/lib/tuned 目录下各策略的 tuned.conf文件确定)

www.zeeklog.com  - linux性能调优干货,【干货分享】详解Linux性能调优之tuned特性
www.zeeklog.com  - linux性能调优干货,【干货分享】详解Linux性能调优之tuned特性

tuned使用说明

Redhat7和centos7默认安装并启动了tuned服务,如果没有的话可以手动安装和启动:

# yum install tuned     -- 安装tuned

# service tuned start    -- 启动tuned服务

# service tuned status   -- 查看tuned状态

对tuned的操作主要通过tuned-adm命令实现。

查看所有可用的profiles和当前使用的profile:

# tuned-adm list

Available profiles:

- balanced          - General non-specialized tuned profile

- desktop             - Optmize for the desktop use-case

- latency-performance   - Optimize for deterministic performance…………

- network-latency            - Optimize for deterministic performance …………

- network-throughput     - Optimize for streaming network throughput. …………

- powersave        - Optimize for low power consumption

- throughput-performance   - Broadly applicable tuning that provides…………

- virtual-guest      - Optimize for running inside a virtual guest.

- virtual-host        - Optimize for running KVM guests

Current active profile: virtual-guest

只查看当前使用的profile:

# tuned-adm active

Current active profile: virtual-guest

切换profile:

tuned-adm profile

# tuned-adm profile balanced

# tuned-adm active

Current active profile: balanced

关闭优化策略,关闭之后可以使用“tuned-adm profile”命令重新打开优化策略:

# tuned-adm off

查看系统推荐的profile,这个优化策略也就是安装并启动tuned服务之后,tuned自动设置使用的profile:

# tuned-adm recommend

virtual-guest

自定义profile

不同的系统和应用场景有不同的优化方案,tuned-adm预先配置的优化策略不是总能满足要求,因此tuned允许用户自己创建和定制新的调优方案。

tuned预定义的profile的配置文件在/usr/lib/tuned目录,用户自定义的profile目录是/etc/tuned。

自定义调优方案步骤很简单:

首先,在/etc/tuned目录下创建一个目录,名称就是自定义profile的名称;

# mkdir myProfile

# ls

active_profile  bootcmdline  myProfile  tuned-main.conf

然后,在自定义profile目录下编写配置文件” tuned.conf”,可以从/usr/lib/tuned复制一个预定义的配置文件过来,然后进行修改,也可以直接创建一个;

# cd myProfile/

# ls

tuned.conf    -- 自定义策略myProfile的优化配置文件

一个简单的配置文件格式如下:

# more desktop/tuned.conf

#

# tuned configuration

#

[main]      -- main段

summary=Optmize for the desktop use-case   -- profile的介绍

include=balanced        -- 包含的profile,也就是基于此profile做些调整

[sysctl]    -- sysctl子系统

kernel.sched_autogroup_enabled=1   -- 需要修改的参数

最后,使用” tuned-adm list”查看,自定义的策略可以使用了。

# tuned-adm list

Available profiles:

………………

- myProfile                   - My profile for test

………………

Current active profile: virtual-guest

总结

tuned特性主要还是使用linux系统现有的一些调节手段和工具,包括电源管理工具,CPU、内存、磁盘等内核参数调整的方式,并将其整合到一个具体的策略(profile)中进行系统的性能调节。

BC-Linux操作系统的用户用户可以根据不同的使用场景和需求,使用现有的策略或者自定义一些策略很方便的对系统的性能进行设置,极大的简化对操作系统的性能调节。

END

往期精选

Read more

决策树算法介绍:原理与案例实现

决策树算法介绍:原理与案例实现

决策树算法介绍:原理与案例实现 决策树算法介绍:原理与案例实现 一、决策树算法概述 决策树是一种基本的分类与回归方法,它基于树形结构进行决策。决策树的每一个节点都表示一个对象属性的测试,每个分支代表该属性测试的一个输出,每个叶节点则代表一个类别或值。决策树学习通常包括三个步骤:特征选择、决策树的生成和决策树的剪枝。 二、决策树算法原理 1. 特征选择 特征选择是决策树学习的核心。它决定了在树的每个节点上选择哪个属性进行测试。常用的特征选择准则有信息增益、增益比和基尼不纯度。 * 信息增益:表示划分数据集前后信息的不确定性减少的程度。选择信息增益最大的属性作为当前节点的测试属性。 * 增益比:在信息增益的基础上考虑了属性的取值数量,避免了对取值数量较多的属性的偏好。 * 基尼不纯度:在CART(分类与回归树)算法中,使用基尼不纯度作为特征选择的准则。基尼不纯度越小,表示纯度越高。 2. 决策树的生成 根据选择的特征选择准则,从根节点开始,递归地为每个节点选择最优的划分属性,并根据该属性的不同取值建立子节点。直到满足停止条件(如所有样本属于同一类,

By Ne0inhk
他给女朋友做了个树莓派复古相机,算法代码可自己编写,成本不到700元

他给女朋友做了个树莓派复古相机,算法代码可自己编写,成本不到700元

手机拍照不够爽,带个单反又太重? 试试做个树莓派复古相机,还能自己编写处理算法的那种—— 成本不到700元。 没错,颜值很高,拍出来的照片也能打: 你也可以快速上手做一个。 如何制作一个树莓派复古相机 目前,这部相机的代码、硬件清单、STL文件(用于3D打印)和电路图都已经开源。 首先是硬件部分。 这部复古相机的硬件清单如下: 树莓派Zero W(搭配microSD卡)、树莓派高清镜头模组、16mm 1000万像素长焦镜头、2.2英寸TFT显示屏、TP4056微型USB电池充电器、MT3608、2000mAh锂电池、电源开关、快门键、杜邦线、3D打印相机外壳、黑色皮革贴片(选用) 至于3D打印的相机外壳,作者已经开源了所需的STL文件,可以直接上手打印。 材料齐全后,就可以迅速上手制作了~ 内部的电路图,是这个样子的: 具体引脚如下: 搭建好后,整体电路长这样: 再加上3D外壳(喷了银色的漆)和镜头,一部简易的树莓派复古相机就做好了。 至于软件部分,

By Ne0inhk
🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

是一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器。 集成了 SearXNG AI 搜索、开发工具集合、 市面上最流行的 AI 工具门户,以及代码编写和桌面快捷工具等功能, 通过模块化的 Monorepo 架构,提供轻量级、可扩展且高效的桌面体验, 助力 AI 驱动的日常工作流程。

By Ne0inhk
LibreChat 集成 Stripe 支付的奶妈级教程

LibreChat 集成 Stripe 支付的奶妈级教程

我们假设你已经熟悉基本的 React 和 Node.js 开发,并且正在使用 LibreChat 的默认技术栈(React 前端、Node.js 后端、Vite 构建工具,可能还有 Electron 桌面应用)。教程会特别考虑 Electron 环境下的适配问题(例如 macOS 中文路径或路由错误)。“奶妈级”带你从零开始实现支付功能(包括一次性支付和添加高级会员订阅) 教程目标 * 在 LibreChat 中添加支付页面,支持用户通过信用卡付款。 * 实现 Stripe 的一次性支付功能。 * (可选)扩展到订阅功能,管理高级会员状态。 * 解决 Electron 环境下的常见问题(如路由和路径解析)。 * 生成可公开推送的 Markdown 教程,方便社区参考。 前提条件 在开始之前,请确保你已准备好以下内容:

By Ne0inhk