• [问题求助] 不支持FT2000CPU吗?安装报错[gauss-51615]欧拉、麒麟、等系统一样的报错
    安装报错[gauss-51615]欧拉、麒麟、等系统一样的报错。CPU型号FT2000
  • [问题求助] IBM system x3610支持ESX7.0系统安装吗?IBM system x3610支持ESX7.0系统安装吗?
    rtIBM system x3610支持ESX7.0系统安装吗?IBM system x3610支持ESX7.0系统安装吗?
  • [技术干货] 【华为开发者布道师】鸿蒙操作系统的图形子系统原理解析——东北大学 张昊阳
    参考书籍资料:《鸿蒙操作系统设计原理与架构》 (李毅,任革林)布道活动地点:东北大学(浑南校区)
  • [问题求助] openEuler 22.03版本的奇怪端口问题
    描述:使用openEuler 22.03操作系统发现一个奇怪问题,一个监听端口已经不存在,telnet 本地回环地址出现卡住现象。
  • [技术干货] sysMaster用户指南
    概述 sysMaster 是一套超轻量、高可靠的服务管理程序集合,是对 1 号进程的全新实现,旨在改进传统的 init 守护进程。它使用 Rust 编写,具有故障监测、秒级自愈和快速启动等能力,从而提升操作系统可靠性和业务可用度。 sysMaster 支持进程、容器和虚拟机的统一管理,其适用于服务器、云计算和嵌入式等多个场景。 sysMaster 实现思路是将传统 1 号进程的功能解耦分层,结合使用场景,拆分出 1+1+N 的架构。 如下面 sysMaster 系统架构图所示,主要包含三个方面: • sysmaster-init:新的 1 号进程提供系统初始化、僵尸进程回收、监控保活等功能,可单独应用于嵌入式场景。 • sysmaster-core:承担原有服务管理的核心功能,引入可靠性框架,使其具备崩溃快速自愈、热升级等能力,保障业务全天在线。 • sysmaster-exts:使原本耦合的各组件功能独立,提供系统关键功能的组件集合(如设备管理 devMaster,总线通信 busMaster 等),各组件可单独使用,可根据不同场景灵活选用。  ​图1 sysMaster整体架构图 sysMaster sysMaster 目前主要由 sysmaster 和 devmaster 两部分功能组成,其中 sysmaster 负责服务的管理,devmaster 负责设备的管理,下面将对这两部分功能进行说明。 
  • [技术干货] sysmaster使用说明
     本章主要通过一些实例来带领用户初步使用 sysmaster,例如:  如何创建 service服务单元配置文件。 如何管理单元服务,例如启动、停止、查看服务。 更多可以查阅官方手册。  创建单元配置文件 用户可以在 /usr/lib/sysmaster/system/目录下创建单元配置文件。  单元配置文件的类型 当前 sysmaster支持 target、socket、service类型的单元配置文件。  target:封装了一个由 sysmaster管理的启动目标,用于将多个单元集中到一个同步点。sysmaster提供不同阶段的 target单元,例如 multi-user.target代表系统已完成启动,用户可以依赖此目标,启动自己的服务。 socket:封装了一个用于进程间通信的套接字 socket, 以支持基于套接字的启动。例如用户可以配置 service单元依赖此 socket,当此 socket有数据写入时,sysmaster会拉起对应的 service单元。 service:封装了一个被 sysmaster监视与控制的进程。 单元配置文件的构成 单元配置文件通常由3块组成:  Unit:单元的公共配置说明,如服务名称、描述、依赖关系等。 Install:描述如何安装和启动服务。 Service、Socket:各个单元类型的配置。 创建service单元配置 sshd服务被用来远程登录到服务器,并在远程终端上执行命令和操作。 使用如下配置项来创建一个 sshd.service服务单元配置。  [Unit] Description=“OpenSSH server daemon” Documentation=“man:sshd(8) man:sshd_config(5)” After=“sshd-keygen.target” Wants=“sshd-keygen.target”  [Service] Type=“notify” EnvironmentFile=“-/etc/sysconfig/sshd” ExecStart=“/usr/sbin/sshd -D $OPTIONS” ExecReload=“/bin/kill -HUP $MAINPID” KillMode=“process” Restart=“on-failure” RestartSec=42  [Install] WantedBy=“multi-user.target” 以下是对单元配置文件中选项配置的说明,更多可以查阅官方手册。  Description:说明该 unit的主要功能。 Documentation:说明该 unit的文档链接。 After:配置同时启动的单元的先后顺序,sshd.service服务将在 sshd-keygen.target之后启动。 Wants:配置一个单元对另一个单元的依赖,启动 sshd.service服务,将会自动启动 sshd-keygen.target。 Type:配置 sysmaster 如何启动此服务,notify表明需要主进程启动完成后发送通知消息。 EnvironmentFile:设置环境变量的文件读取路径。 ExecStart:配置服务启动时执行的命令,启动 sshd.service服务会执行 sshd命令。 ExecReload:配置重新加载 sshd.service的配置时执行的命令。 KillMode:配置当需要停止服务进程时,杀死服务进程的方法,process表示只杀死主进程。 Restart:配置服务不同情况下退出或终止,是否重新启动服务,on-failure表示当服务非正常退出时重新启动服务。 RestartSec:配置当服务退出时,重新拉起服务的间隔时间。 WantedBy:配置依赖当前 sshd.service服务的单元。 管理单元服务 sctl是 sysmaster的命令行工具,用于检查和控制 sysmaster服务端行为和各个服务的状态,它可以启动、停止、重启、检查系统服务。  启动服务 使用以下命令可以启动 sshd服务和运行 ExecStart所配置的命令。  sctl start sshd.service 停止服务 使用以下命令可以停止 sshd服务,杀死 ExecStart所运行的进程。  sctl stop sshd.service 重启服务 使用以下命令可以重启 sshd服务,该命令会先停止后启动服务。  sctl restart sshd.service 查看服务状态 使用以下命令可以查看服务 sshd运行状态,用户可以查看服务的状态来获取服务是否正常运行。 
  • [技术干货] isocut 使用指南
     简介 openEuler 光盘镜像较大,下载、传输镜像很耗时。另外,使用 openEuler 光盘镜像安装操作系统时,会安装镜像所包含的全量 RPM 软件包,用户无法只安装部分所需的软件包。  在某些场景下,用户不需要安装镜像提供的全量软件包,或者需要一些额外的软件包。因此,openEuler 提供了镜像裁剪定制工具。通过该工具,用户可以基于 openEuler 光盘镜像裁剪定制仅包含所需 RPM 软件包的 ISO 镜像。这些软件包可以来自原有 ISO 镜像,也可以额外指定,从而满足用户定制需求。  本文档介绍 openEuler 镜像裁剪定制工具的安装和使用方法,以指导用户更好的完成镜像裁剪定制。  软硬件要求 使用 openEuler 裁剪定制工具制作 ISO 所使用的机器需要满足如下软硬件要求:  CPU 架构为 AArch64。 操作系统为 openEuler 22.03 LTS SP3。 建议预留 60 GB 以上的磁盘空间(用于运行裁剪定制工具和存放 ISO 镜像)。 安装工具 此处以 openEuler 22.03 LTS SP3 版本的 AArch64 架构为例,介绍 ISO 镜像裁剪定制工具的安装操作。  确认机器已安装操作系统 openEuler 22.03 LTS SP3(镜像裁剪定制工具的运行环境)。  $ cat /etc/openEuler-release openEuler release 22.03 LTS SP3 下载对应架构的 ISO 镜像(必须是 everything 版本),并存放在任一目录(建议该目录磁盘空间大于 20 GB),此处假设存放在 /home/isocut_iso 目录。  AArch64 架构的镜像下载链接为:  https://repo.openeuler.org/openEuler-22.03-LTS-SP3/ISO/aarch64/openEuler-22.03-LTS-SP3-everything-aarch64-dvd.iso  说明: x86_64 架构的镜像下载链接为:  https://repo.openeuler.org/openEuler-22.03-LTS-SP3/ISO/x86_64/openEuler-22.03-LTS-SP3-everything-x86_64-dvd.iso  创建文件 /etc/yum.repos.d/local.repo,配置对应 yum 源。配置内容参考如下,其中 baseurl 是用于挂载 ISO 镜像的目录:  [local] name=local baseurl=file:///home/isocut_mount gpgcheck=0 enabled=1 使用 root 权限,挂载光盘镜像到 /home/isocut_mount 目录(请与上述 repo 文件中配置的 baseurl 保持一致)作为 yum 源,参考命令如下:  sudo mount -o loop /home/isocut_iso/openEuler-22.03-LTS-SP3-everything-aarch64-dvd.iso /home/isocut_mount 使 yum 源生效:  yum clean all yum makecache 使用 root 权限,安装镜像裁剪定制工具:  sudo yum install -y isocut 使用 root 权限,确认工具已安装成功:  $ sudo isocut -h Checking input … usage: isocut [-h] [-t temporary_workspace] [-r rpm_path] [-k kickstart_file_path] [-p product_name] [-v version_number] [-i install_picture_path] [-c cut_packages] source_iso dest_iso  Cut openEuler iso to small one  positional arguments: source_iso source iso image dest_iso destination iso image  optional arguments: -h, --help show this help message and exit -t temporary_workspace temporary workspace -r rpm_path extern rpm packages path -k kickstart_file_path kickstart file path -p product_name The product name -v version_number The version number -i install_picture_path The path of background pictures during the installation -c cut_packages cut packages, yes/no, default is yes 裁剪定制镜像 此处介绍如何使用镜像裁剪定制工具基于 openEuler 光盘镜像裁剪或添加额外 RPM 软件包制作新镜像的方法。  命令介绍 命令格式 镜像裁剪定制工具通过 isocut 命令执行功能。命令的使用格式为:  isocut [ --help | -h ] [ -t <temporary_workspace> ] [ -r <rpm_path> ] [ -k <kickstart_file_path> ] [ -p <product_name> ] [ -v <version_number>] [ -i <install_picture_path> ] [ -c <cut_packages> ] < source_iso > < dest_iso >  参数说明 参数 是否必选 参数含义 –help | -h 否 查询命令的帮助信息。 -t <temporary_workspace> 否 指定工具运行的临时目录 temporary_workspace,其中 temporary_workspace 为绝对路径。默认为 /tmp 。 -r <rpm_path> 否 用户需要额外添加到 ISO 镜像中的 RPM 包路径。 -k <kickstart_file_path> 否 用户需要使用 kickstart 自动安装,指定 kickstart 模板路径。 -p <product_name> 否 产品名称。 -v <version_number> 否 产品版本号。 -i<install_picture_path> 否 中度换标替换图片路径。 -c <cut_packages> 否 用户需要通过指定 cut_packages 参数,选择是否需要裁剪rpm包。默认为裁剪rpm包。 source_iso 是 用于裁剪的 ISO 源镜像所在路径和名称。不指定路径时,默认当前路径。 dest_iso 是 裁剪定制生成的 ISO 新镜像存放路径和名称。不指定路径时,默认当前路径。 说明:  表中提到的路径均支持绝对路径和相对路径。 中度换标替换图片路径下图片文件命名及像素要求如下:  安装引导界面左侧边栏背景图: sidebar-bg.png 290780 安装引导界面左上角logo图片: sidebar-logo.png 13232 设置信息上侧工具栏背景图: topbar-bg.png 831*105 软件包来源 新镜像的 RPM 包来源有:  原有 ISO 镜像。该情况通过配置文件 /etc/isocut/rpmlist 指定需要安装的 RPM 软件包,配置格式为 “软件包名.对应架构”,例如:kernel.aarch64 。  额外指定。执行 isocut 时使用 -r 参数指定软件包所在路径,并将添加的 RPM 包按上述格式添加到配置文件 /etc/isocut/rpmlist 中。  说明:  裁剪定制镜像时,若无法找到配置文件中指定的 RPM 包,则镜像中不会添加该 RPM 包。 若 RPM 包的依赖有问题,则裁剪定制镜像时可能会报错。 kickstart 功能介绍 用户需要实现镜像自动化安装,可以通过 kickstart 的方式。在执行 isocut 时使用 -k 参数指定 kickstart 文件。  isocut 为用户提供了 kickstart 模板,路径是 /etc/isocut/anaconda-ks.cfg,用户可以基于该模板修改。  修改 kickstart 模板 若用户需要使用 isocut 工具提供的 kickstart 模板,需要修改以下内容:  必须在文件 /etc/isocut/anaconda-ks.cfg 中配置 root 和 grub2 的密码。否则镜像自动化安装会卡在设置密码的环节,等待用户手动输入密码。 如果要添加额外 RPM 包,并使用 kickstart 自动安装,则在 /etc/isocut/rpmlist 和 kickstart 文件的 %packages 字段都要指定该 RPM 包。 接下来介绍 kickstart 文件详细修改方法。  配置初始密码 配置 root 初始密码 /etc/isocut/anaconda-ks.cfg 中 root 初始密码的默认配置如下,其中 ${pwd} 需要替换成用户实际的加密密文:  rootpw --iscrypted ${pwd} 这里给出设置 root 初始密码的方法(需使用 root 权限):  添加用于生成密码的用户,此处假设 testUser:  $ sudo useradd testUser 设置 testUser 用户的密码。参考命令如下,根据提示设置密码:  $ sudo passwd testUser Changing password for user testUser. New password: Retype new password: passwd: all authentication tokens updated successfully. 查看 /etc/shadow 文件,获取加密密码(用户 testUser 后,两个 : 间的字符串,此处使用 *** 代替):  $ sudo cat /etc/shadow | grep testUser testUser:***:19052:0:90:7:35:: 拷贝上述加密密码替换 /etc/isocut/anaconda-ks.cfg 中的 pwd 字段,如下所示(请用实际内容替换 *** ):  rootpw --iscrypted *** 配置 grub2 初始密码 /etc/isocut/anaconda-ks.cfg 文件中添加以下配置,配置 grub2 初始密码。其中 ${pwd} 需要替换成用户实际的加密密文:  %addon com_huawei_grub_safe --iscrypted --password=‘${pwd}’ %end 说明:  配置 grub 初始密码需要使用 root 权限。  grub 密码对应的默认用户为 root 。  系统中需有 grub2-set-password 命令,若不存在,请提前安装该命令。  执行如下命令,根据提示设置 grub2 密码:  $ sudo grub2-set-password -o ./ Enter password: Confirm password: grep: .//grub.cfg: No such file or directory WARNING: The current configuration lacks password support! Update your configuration with grub2-mkconfig to support this feature. 命令执行完成后,会在当前目录生成 user.cfg 文件,grub.pbkdf2.sha512 开头的内容即 grub2 加密密码:  $ sudo cat user.cfg GRUB2_PASSWORD=grub.pbkdf2.sha512.*** 复制上述密文,并在 /etc/isocut/anaconda-ks.cfg 文件中增加如下配置:  %addon com_huawei_grub_safe --iscrypted --password=‘grub.pbkdf2.sha512.***’ %end 配置 %packages 字段 如果需要添加额外 RPM 包,并使用 kickstart 自动安装,需要在 /etc/isocut/rpmlist 和 kickstart 文件的 %packages 字段都指定该 RPM 包。  此处介绍在 /etc/isocut/anaconda-ks.cfg 文件中添加 RPM 包。  /etc/isocut/anaconda-ks.cfg 文件的 %packages 默认配置如下:  %packages --multilib --ignoremissing acl.aarch64 aide.aarch64 … NetworkManager.aarch64 %end 将额外指定的 RPM 软件包添加到 %packages 配置中,需要遵循如下配置格式:  “软件包名.对应架构”,例如:kernel.aarch64  %packages --multilib --ignoremissing acl.aarch64 aide.aarch64 … NetworkManager.aarch64 kernel.aarch64 %end 操作指导 说明:  请不要修改或删除 /etc/isocut/rpmlist 文件中的默认配置项。 isocut 的所有操作需要使用 root 权限。 待裁剪的源镜像可以为基础镜像,也可以是 everything 版镜像,例子中以基础版镜像 openEuler-22.03-LTS-SP3-aarch64-dvd.iso 为例。 例子中假设新生成的镜像名称为 new.iso,且存放在 /home/result 路径;运行工具的临时目录为 /home/temp;额外的 RPM 软件包存放在 /home/rpms 目录。 修改配置文件 /etc/isocut/rpmlist,指定用户需要安装的 RPM 软件包(来自原有 ISO 镜像)。  sudo vi /etc/isocut/rpmlist 确定运行镜像裁剪定制工具的临时目录空间大于 8 GB 。默认临时目录为 /tmp,也可以使用 -t 参数指定其他目录作为临时目录,该目录必须为绝对路径。本例中使用目录 /home/temp,由如下回显可知 /home 目录可用磁盘为 38 GB,满足要求。  $ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.2G 0 1.2G 0% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm tmpfs 1.5G 23M 1.5G 2% /run tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup /dev/mapper/openeuler_openeuler-root 69G 2.8G 63G 5% / /dev/sda2 976M 114M 796M 13% /boot /dev/mapper/openeuler_openeuler-home 61G 21G 38G 35% /home 执行裁剪定制。  场景一:新镜像的所有 RPM 包来自原有 ISO 镜像  $ sudo isocut -t /home/temp /home/isocut_iso/openEuler-22.03-LTS-SP3-aarch64-dvd.iso /home/result/new.iso Checking input … Checking user … Checking necessary tools … Initing workspace … Copying basic part of iso image … Downloading rpms … Finish create yum conf finished Regenerating repodata … Checking rpm deps … Getting the description of iso image … Remaking iso … Adding checksum for iso … Adding sha256sum for iso … ISO cutout succeeded, enjoy your new image “/home/result/new.iso” isocut.lock unlocked … 回显如上,说明新镜像 new.iso 定制成功。  场景二:新镜像的 RPM 包除来自原有 ISO 镜像,还包含来自 /home/rpms 的额外软件包  sudo isocut -t /home/temp -r /home/rpms /home/isocut_iso/openEuler-22.03-LTS-SP3-aarch64-dvd.iso /home/result/new.iso 场景三:使用 kickstart 文件实现自动化安装,需要修改 /etc/isocut/anaconda-ks.cfg 文件  sudo isocut -t /home/temp -k /etc/isocut/anaconda-ks.cfg /home/isocut_iso/openEuler-22.03-LTS-SP3-aarch64-dvd.iso /home/result/new.iso cut packages 功能介绍 基于 openEuler 发布的标准 ISO 镜像进行最小系统定制裁剪,定制安装过程中支持按需裁剪 RPM 包。  通过指定cut_packages参数,用户可以自行选择是否需要裁剪RPM包。  操作指导 场景一:用户不裁剪RPM包  $ sudo isocut -t /opt/tlriso/tmp -p openEuler -c no -v 22.03-LTS-SP3 openEuler-22.03-LTS-SP3-x86_64-dvd.iso openEuler-22.03-LTS-SP3-x86_64-dvd_new.iso Checking input … Checking user … Checking necessary tools … Initing workspace … Copying basic part of iso image … Getting the description of iso image … Downloading rpms … Finish create yum conf finished Regenerating repodata … Checking rpm deps … Skip checking rpm deps!! Replacing install background pictures … Updating EFI config file … Updating legacy config file … Updating treeinfo file … Customizing kickstart file … Remaking iso … Adding checksum for iso … Adding sha256sum for iso … ISO cutout succeeded, enjoy your new image “openEuler-22.03-LTS-SP3-x86_64-dvd_new.iso” isocut.lock unlocked … 回显如上,说明新镜像 new.iso 定制成功。  场景二:用户裁剪rpm包  sudo isocut -t /opt/tlriso/tmp -p openEuler -c yes -v 22.03-LTS-SP3 openEuler-22.03-LTS-SP3-x86_64-dvd.iso openEuler-22.03-LTS-SP3-x86_64-dvd_new.iso 场景三:默认裁剪rpm包,参数取值为空  sudo isocut -t /opt/tlriso/tmp -p openEuler -v 22.03-LTS-SP3 openEuler-22.03-LTS-SP3-x86_64-dvd.iso openEuler-22.03-LTS-SP3-x86_64-dvd_new.iso 
  • [技术干货] 磁盘IO子系统性能调优
     调优思路 CPU的Cache、内存和磁盘之间的访问速度差异很大,当CPU计算所需要的数据并没有及时加载到内存或Cache中时,CPU将会浪费很多时间等待磁盘的读取。计算机系统通过cache、RAM、固态盘、磁盘等多级存储结构,并配合多种调度算法,来消除或缓解这种速度不对等的影响。但是缓存空间总是有限的,我们可以利用局部性原理,尽可能的将热点数据提前从磁盘中读取出来,降低CPU等待磁盘的时间浪费。因此我们的部分优化手段其实是围绕着如何更充分的利用Cache获得更好的IO性能。  另外,本章节也会介绍从文件系统层面的优化手段。  主要优化参数 优化项  优化项简介  默认值  生效范围  鲲鹏916  鲲鹏920  脏数据缓存到期时间  调整脏数据缓存到期时间,分散磁盘的压力。  3000(单位为0.01秒)  立即生效YY  脏页面占用总内存最大的比例  调整脏页面占用总内存最大的比例(以memfree+Cached-Mapped为基准),增加PageCache命中率。  10%  立即生效YY  脏页面缓存占用总内存最大的比例  调整脏页面占用总存最大的比例,避免磁盘写操作变为O_DIRECT同步,导致缓冲机制失效。  40%  立即生效YY  调整磁盘文件预读参数  根据局性原理,在读取磁盘数据时,额外地多读一定量的数据缓存到内存。  128KB  立即生效YY  磁盘IO调度方式  根据业务处理数据的特点,选择合适的IO调度器。  cfq  立即生效YY  文件系统  选用性能更好的文件系统以及文件系统相关的选项。 二、 介绍 iostat是调查磁盘IO问题使用最频繁的工具。它汇总了所有在线磁盘统计信息,为负载特征归纳,使用率和饱和度提供了指标。它可以由任何用户执行,统计信息直接来源于内核,因此这个工具的开销基本可以忽略不计。  安装方式 iostat一般会随系统安装。如果没有,以CentOS为例,可以使用以下命令安装:  yum -y install sysstat 使用方式 命令格式:直接使用命令+参数,例如  iostat -d -k -x 1 100 常用参数如下:  参数  说明  -c  显示CPU使用情况。  -d  显示磁盘使用情况。  -k  以KB为单位显示。  -m  以M为单位显示。  -p  显示磁盘单个的情况。  -t  显示时间戳。  -x  显示详细信息。  我们也可以在最后添加统计周期和统计时长,比如上面的样例中,是要求以1s为周期统计,总共统计100s。  输出格式:  Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 0.02 7.25 0.04 1.90 0.74 35.47 37.15 0.04 19.13 5.58 1.09 dm-0 0.00 0.00 0.04 3.05 0.28 12.18 8.07 0.65 209.01 1.11 0.34 dm-1 0.00 0.00 0.02 5.82 0.46 23.26 8.13 0.43 74.33 1.30 0.76 dm-2 0.00 0.00 0.00 0.01 0.00 0.02 8.00 0.00 5.41 3.28 0.00 参数含义如下:  参数  说明  rrqm/s  每秒合并放入请求队列的读操作数。  wrqm/s  每秒合并放入请求队列的写操作数。  r/s  每秒磁盘实际完成的读I/O设备次数。  w/s  每秒磁盘实际完成的写I/O设备次数。  rkB/s  每秒从磁盘读取KB数。  wkB/s  每秒写入磁盘的KB数。  avgrq-sz  平均请求数据大小,单位为扇区(512B)。  avgqu-sz  平均I/O队列长度(操作请求数)。  await  平均每次设备I/O操作的等待时间(毫秒)。  svctm  平均每次设备I/O操作的响应时间(毫秒)。  %util  用于I/O操作时间的百分比,即使用率。  重要参数详解:  rrqm/s和wrqm/s,每秒合并后的读或写的次数(合并请求后,可以增加对磁盘的批处理,对HDD还可以减少寻址时间)。如果值在统计周期内为非零,也可以看出数据的读或写操作的是连续的,反之则是随机的。 如果%util接近100%(即使用率为百分百),说明产生的I/O请求太多,I/O系统已经满负荷,相应的await也会增加,CPU的wait时间百分比也会增加(通过TOP命令查看),这时很明显就是磁盘成了瓶颈,拖累整个系统。这时可以考虑更换更高性的能磁盘,或优化软件以减少对磁盘的依赖。 await(读写请求的平均等待时长)需要结合svctm参考。svctm的和磁盘性能直接有关,它是磁盘内部处理的时长。await的大小一般取决于svctm以及I/O队列的长度和。svctm一般会小于await,如果svctm比较接近await,说明I/O几乎没有等待时间(处理时间也会被算作等待的一部分时间);如果wait大于svctm,差的过高的话一定是磁盘本身IO的问题;这时可以考虑更换更快的磁盘,或优化应用。 队列长度(avgqu-sz)也可作为衡量系统I/O负荷的指标,但是要多统计一段时间后查看,因为有时候只是一个峰值过高。 三、 介绍 blktrace是一个用户态的工具,提供I/O子系统上时间如何消耗的详细信息,从中可以分析是IO调度慢还是硬件响应慢等。配套工具blkparse从blktrace读取原始输出,并产生人们可读的输入和输出操作摘要。btt作为blktrace软件包的一部分而被提供,它分析blktrace输出,并显示该数据用在每个I/O栈区域的时间量,使它更容易在I/O子系统中发现瓶颈。  安装方式 以CentOS为例,可以使用以下命令安装:  yum -y install blktrace 使用方式 使用blktrace命令抓取指定设备的IO信息,如:  blktrace -w 120 -d /dev/sda “-w”后接的参数指定抓取时间,以秒为单位;“-d”后接的参数指定设备。  命令执行完后会生成一系列以device.blktrace.cpu格式命令的二进制文件。  使用blkparse命令解析blktrace生成的数据,如:  blkparse -i sda -d blkparse.out “-i”后接的参数指定输入文件名,由于blktrace输出的文件名默认都是device.blktrace.cpu格式,所以只需输入前面的“device”即可;“-d”后接的参数指定二进制输出文件。  这个命令会将分析结果输出到屏幕,并且将分析结果的二进制数据输出到blkparse.out文件中。  使用btt命令查看IO的整体情况,如:  btt -i blkparse.out “-i”后接的参数指定输入文件名。  Q2Q:多个发送到块IO层请求的时间间隔。 Q2G:生成IO请求所消耗的时间,包括remap(可能被DM(Device Mapper)或MD(Multiple Device, Software RAID)remap到其它设备)和split(可能会因为I/O请求与扇区边界未对齐、或者size太大而被分拆(split)成多个物理I/O)的时间。 G2I:IO请求进入IO Scheduler所消耗的时间,包括merge(可能会因为与其它I/O请求的物理位置相邻而合并成一个I/O)的时间。 I2D:IO请求在IO Scheduler中等待的时间。 D2C:IO请求在driver和硬件上(IO请求被driver提交给硬件,经过HBA、电缆(光纤、网线等)、交换机(SAN或网络)、最后到达存储设备,设备完成IO请求之后再把结果发回)所消耗的时间。 Q2C:整个IO请求所消耗的时间(Q2I + I2D + D2C = Q2C),相当于iostat的await。 正常情况D2C占比90%以上,若I2D占比较高,可以尝试调整IO调度策略。 四、原理 PageCache中需要回写到磁盘的数据为脏数据。在应用程序通知系统保存脏数据时,应用可以选择直接将数据写入磁盘(O_DIRECT),或者先写到PageCache(非O_DIRECT模式)。非O_DIRECT模式,对于缓存在PageCache中的数据的操作,都在内存中进行,减少了对磁盘的操作。  修改方式 系统中提供了以下参数来调整策略:  /proc/sys/vm/dirty_expire_centiseconds此参数用于表示脏数据在缓存中允许保留的时长,即时间到后需要被写入到磁盘中。此参数的默认值为30s(3000 个0.01秒)。如果业务的数据是连续性的写,可以适当调小此参数,这样可以避免IO集中,导致突发的IO等待。可以通过echo命令修改:  echo 2000 > /proc/sys/vm/dirty_expire_centisecs /proc/sys/vm/dirty_background_ratio脏页面占用总内存最大的比例(以memfree+Cached-Mapped为基准),超过这个值,pdflush线程会刷新脏页面到磁盘。增加这个值,系统会分配更多的内存用于写缓冲,因而可以提升写磁盘性能。但对于磁盘写入操作为主的业务,可以调小这个值,避免数据积压太多最后成为瓶颈,可以结合业务并通过观察await的时间波动范围来识别。此值的默认值是10,可以通过echo来调整: echo 8 > /proc/sys/vm/dirty_background_ratio /proc/sys/vm/dirty_ratio为脏页面占用总内存最大的比例,超过这个值,系统不会新增加脏页面,文件读写也变为同步模式。文件读写变为同步模式后,应用程序的文件读写操作的阻塞时间变长,会导致系统性能变慢。此参数的默认值为40,对于写入为主的业务,可以增加此参数,避免磁盘过早的进入到同步写状态。 说明 如果加大了脏数据的缓存大小和时间,在意外断电情况下,丢失数据的概率会变多。因此对于需要立即存盘的数据,应该采用O_DIRECT模式避免关键数据的丢失。 
  • [其他问题] 华为鲲鹏920 5220 内核4.14.0-115.el7a.0.1.aarch64 系统:centos 7.6.1810(altarch)如何安装dotnet5和dotnet7
    安装完dotnet后执行dotnet --info报错,  执行dotnet --list  又没问题 ,大概意思libicuil8n..so.50这个文件有问题,但又找不到正常文件cannot get symbol ucol_setMaxVariable_50 from libicui18n error:/lib64/libicuil8n..so.50: undefined symbol:ucol_setMaxVariable_50 Aborted
  • [问题求助] gaussDB是否能像mysql一样在windows和linux安装呢,如果可以是在哪里下载相关安装包呢
    gaussDB是否能像mysql一样在windows和linux安装呢,如果可以是在哪里下载相关安装包呢
  • [案例分享] 如何关闭和开启透明大页transparent_hugepage
    关闭 echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag 修改完成后,请执行如下命令,使参数生效。 reboot 打开 echo always> /sys/kernel/mm/transparent_hugepage/enabled echo always> /sys/kernel/mm/transparent_hugepage/defrag 修改完成后,请执行如下命令,使参数生效。 reboot 透明大页的enabled和defrag的取值有三个 always madvise 和never
  • [案例分享] windows环境下查询端口是否被占用
    windows环境下查询端口是否被占用netstat -aon|findstr "具体的端口号",例如:netstat -aon|findstr "5432"TCP 0.0.0.0:5432 0.0.0.0:0 LISTENING 11108TCP 127.0.0.1:65432 0.0.0.0:0 LISTENING 1092TCP [::]:5432 [::]:0 LISTENING 11108UDP 127.0.0.1:65432 *:* 1092
  • [技术干货] 产品的操作系统功能域介绍
       基于台区SCU操作系统规范要求,使用国产操作系统RTOS和轻量化容器引擎isulad,满足了嵌入式轻量化、资源占用少的要求,为应用层提供稳定的基础服务平台。主要定制特性如下:基于RTOS基础能力实现进程管理、内存管理和文件系统管理等基础功能和性能规格要求。适配电力行业安全标准,满足安全启动、可信启动要求。使用国产轻量化容器isula实现容器功能。基于台区规范要求,增加了命令行、设备管理等基础管理功能。操作系统板级外设驱动适配。功能名称功能简述日志管理对日志大小、转存等进行管理;日志压缩等用户管理添加、删除用户;用户权限控制;用户密码修改等网络管理对网络IP、路由等进行配置4G上网 提供4G上网功能  设备管理  提供容器管理  安全加固  安全启动、权限控制,用户隔离  驱动适配  支持载波、交采、串口管理、4G上网、以太网 表1 操作系统功能域简述表   
  • [技术干货] 已有成熟的操作系统,为什么还要研发国产操作系统呢?
    谈起国内操作系统,你会想到什么呢?对龙蜥操作系统或是和龙蜥操作系统一样的国产操作系统抱有怎样的期待?你使用过龙蜥操作系统吗?你最关注的操作系统特性是哪方面?
  • [技术干货] 服务器操作系统与 AI 和云计算的结合,将会掀起一股什么样的热潮?
    《国产服务器操作系统发展报告(2023)》称操作系统已步入 2.0 时代,服务器操作系统与 AI 和云计算的结合已是大势所趋,你认为龙蜥开源操作系统在云+AI 的时代面临哪些挑战?对此你有什么看法?
总条数:19 到第
上滑加载中