
Linux系统
文章平均质量分 65
rayylee
awk 'BEGIN{O="o"~"o";o="O"=="O";O+=+o;o_+=o""o;for(;++_o!=o_-O;)O_=O_"%c";printf(O_,o_*(o_-o)+O+O,o_*(o_-O)-O,o_*o_,o_*o_,o_*(o_-o)-O,o_*(o_-O)+O,o_*(o_-O)+O,o_-o)}'
展开
-
linux驱动加载流程分析
内核是如何加载驱动的,有些是编译到内核里面,有些事编译成ko,让系统自动加载。总的说来,在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载。原创 2022-12-10 16:38:28 · 6648 阅读 · 0 评论 -
linux虚拟内存、异步io及零拷贝简介
本文从虚拟内存、I/O 缓冲区,用户态&内核态以及 I/O 模式等等知识点全面而又详尽地剖析 Linux 系统的 I/O 底层原理,分析了 Linux 传统的 I/O 模式的弊端,进而引入 Linux Zero-copy 零拷贝技术的介绍和原理解析,将零拷贝技术和传统的 I/O 模式进行区分和对比,帮助读者理解 Linux 内核对 I/O 模块的优化改进思路。原创 2022-09-28 11:18:08 · 581 阅读 · 0 评论 -
linux xdp简介
XDP(eXpress Data Path)为Linux内核提供了高性能、可编程的网络数据路径。由于网络包在还未进入网络协议栈之前就处理,它给Linux网络带来了巨大的性能提升(性能比DPDK还要高)。原创 2022-08-30 22:26:29 · 1602 阅读 · 0 评论 -
Linux系统压力测试工具stress
iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。.........原创 2022-07-11 22:20:19 · 1257 阅读 · 0 评论 -
Linux网络通信优化方法
Linux 网络在性能方面有哪些优化手段可用呢?本文将给出一些开发或者运维中的 Linux 网络性能优化建议。要注意的是,每一种性能优化方法都有它适用或者不适用的应用场景,应当根据当前的项目现状灵活来选择用或者不用。...原创 2022-06-30 10:21:48 · 656 阅读 · 0 评论 -
io_uring异步io简介
io_uring 是facebook开发的,从 5.1 就进 Linux 内核主线了,但陆续改进到 5.11 才有了 kLoop 需要的全部功能,并且仍在持续改进中。笼统来讲,应用程序用内存映射(mmap)的方式拿到两条与内核共享的环状队列,通过其中一条队列(SQ)给内核源源不断的布置任务,然后从另外一条队列(CQ)获取结果;内核则按需进行 epoll(),并在一个线程池中执行就绪的任务。...原创 2022-06-29 08:45:42 · 1058 阅读 · 0 评论 -
centos8终端fish安装
centos8终端fish原创 2022-06-25 21:10:02 · 984 阅读 · 0 评论 -
shell等待特定进程pid退出的方法
Bash 内置了 wait 命令用于等待进程的退出,并返回其退出码:wait [-n] [n ...]Wait for each specified child process and return its termination status.Each n may be a process ID or a job specification; if a job spec is given, all processes in that job's pipeline are waited for.I原创 2021-11-09 19:22:48 · 4648 阅读 · 0 评论 -
Centos8 cmake运行失败 undefined symbol archive_write_add_filter_zstd
centOS8(x86_64 或 aarch64) 系统下 yum或dnf 默认安装的 cmake-3.18.2-11.el8版本,安装后无法使用,出现:cmake: symbol lookup error: cmake: undefined symbol: archive_write_add_filter_zstd错误。该错误解决办法两种:第一种:安装 libarchivednf install libarchive 或者 yum install libarchive第二种: 安原创 2021-09-08 17:29:51 · 1880 阅读 · 0 评论 -
Centos8安装X11-forwarding图形服务
在使用 MobaXterm 连接远程服务器的时候遇见了 X11-forwarding ,后面跟着一个亮眼的 红叉,如下图。强迫症看见它十分不爽,于是想办法干掉它。如下图。强迫症看见它十分不爽,于是想办法干掉它。什么是X11-forwarding?X11 中的 X 指的就是 X 协议;11 指的是采用 X 协议的第 11 个版本。X11-forwarding 说的简单明白点就是:可以通过一个支持 X Server 的 SSH 客户端,例如:MobaXterm。 连接到远程 Linux 服务器,可以在原创 2021-07-14 14:10:44 · 4186 阅读 · 0 评论 -
LinuxControlGroup(Cgroup)简介
Linux Control Group(简称 cgroup)是一个用于限制、统计和隔离进程的资源的特性,它于 2006 年由 Google 的两位工程师开发,之后合入 2.6.24 版本的内核。那时 docker 正在 Google 内部兴起,本人推测正是前者催生了 cgroup。本文重点介绍如何用 cgroup 限制进程的资源。在虚拟化领域,如 qemu-kvm 和 linux container,cgroup 用常用来限制以下类型的资源:CPU time:进程占用的 CPU 时间Memory:进原创 2021-06-17 10:36:58 · 660 阅读 · 0 评论 -
Linux日志收集logrotate原理介绍
前言在Linux环境中能够帮助我们分析问题蛛丝马迹的有效办法之一便是日志,常见的如操作系统syslog日志/var/log/messages,应用程序Nginx日志/var/log/nginx/*.log。但如果服务器数量较多,日志文件大小增长较快,不断消耗磁盘空间就会触发告警,如果需要人为定期按照各种维度去手动清理日志就显得十分棘手。为了节省空间和方便整理,可以将日志文件按时间或大小分成多份,删除时间久远的日志文件,这就是通常说的日志滚动(log rotation)。logrotate(GitHub地址原创 2021-06-11 15:29:57 · 512 阅读 · 0 评论 -
Fedora 16下Samba服务的配置
由于要完成文件Win7 与VMware虚拟机(Fedora 16)之间的文件共享,所以需要进行samba服务的配置。具体过程如下:1.下载并安装Samba服务root下执行命令:yum install samba2.建立共享文件夹我建立的共享目录为:/home/ruby/share 和/home/ruby/unix执行命令:mkdir /home/ruby/shar原创 2012-11-01 17:36:31 · 713 阅读 · 0 评论 -
Linux性能优化方向及相关工具
1. 考察性能的指标从应用负载的角度吞吐延时从系统资源的角度CPU使用率内存饱和度2. 定位性能问题的步骤选择指标评估性能设置性能优化的目标进行性能基准测试分析和定位性能瓶颈对系统和应用性能优化对性能进行监控和告警3. Linux性能工具图谱当Linux不同的子系统出现问题时,可以参照下图来解决4. Linux性能优化知识图谱...原创 2021-06-06 07:54:30 · 133 阅读 · 0 评论 -
Hyper-v 开启嵌套虚拟化的方法
我们都知道,Hyper-v 是微软自己虚拟化服务 ,对于硬件和系统的兼容是毋庸置疑,之前使用 VMware 虚拟化平台时,经常会出现文件丢失损坏等尴尬,于是果断换成 hyper-v 之后,再也没出现过。1、要实现 hyper-v 嵌套虚拟化,首先,我们以管理员身份打开 powershell ,如图:2、在命令行中输入 get-vm ,列出我们自己的虚拟机,如图:PS C:\Users\Windows> Get-VM3、输入 Get-VMProcessor -VMName KVM主机 |原创 2021-06-04 22:16:30 · 10386 阅读 · 0 评论 -
PCI总线负载能力
描述PCI Spec规定了每个PCI总线上最多可以连接多达32个PCI设备,但是实际上却远远达不到32个,33MHz的32位PCI总线一般只能连接10到12个负载。注:如果使用插槽连接,则一个连接算两个PCI设备,插槽和PCI卡分别算作一个PCI设备。也就是说一个33MHz的PCI总线最多只能连接4到5个插槽即PCI卡。这是因为PCI总线在设计的时候,为了降低功耗,采用了一种叫做reflected‐wave signaling的技术,如下图所示:由图可知,为了降低功耗PCI设备的发送端采用了一种原创 2021-05-13 21:51:46 · 728 阅读 · 0 评论 -
xfs文件系统lvm在线扩容
lvm扩容方法通过pvs,vgs,lvs 等确认要扩容的VG,LV的名称、大小等信息,以免弄错。1、确认服务器新扫描到的volume信息#fdisk -l | more2、fdisk 给新设备分区,选择分区类型为8e,lvm格式,w保存分区。如果是新增加分区#fdisk /dev/vda2如果是将vda进行了扩容#fdisk /dev/vdafdisk> nfdisk> tfdisk> w3、创建PV#pvcreate /dev/vda2 #pvs原创 2021-05-06 17:38:09 · 1575 阅读 · 0 评论 -
FC命令操作
1. 查看hba卡设备# lspci | grep -i fibre# ls /sys/class/fc_host# cat /sys/class/fc_host/host0/port_state2. FC操作// 连接状态# cat /sys/class/fc_host/host0/port_state// FC磁盘# ls -al /dev/disk/by-path/*-fc-*// 扫描# echo "- - - " > scsi_host/host15/scan#原创 2021-04-25 15:50:41 · 1708 阅读 · 0 评论 -
iscsi存储常见错误
1. ISCSI安装安装ceph#下载较新版本的源代码(含Ceph模块即可)git clone https://github.com/fujita/tgt.git export CEPH_RBD=1 make make install 安装iscsiyum install iscsi2. ISCSI常见命令target端:#创建targettgtadm --lld iscsi --mode target --op new --tid 1 --targetname i原创 2021-04-20 14:14:02 · 11433 阅读 · 0 评论 -
linux性能监控sar命令详解
语法格式sar [ 选项 ] [ <时间间隔> [ <次数> ] ]sar -h 显示帮助信息:-A:所有报告的总和-b:显示I/O和传递速率的统计信息-B:显示换页状态-d:输出每一块磁盘的使用信息-e:设置显示报告的结束时间-f:从制定的文件读取报告-i:设置状态信息刷新的间隔时间-P:报告每个CPU的状态-R:显示内存状态-u:输出cpu使用情况和统计信息-v:显示索引节点、文件和其他内核表的状态-w:显示交换分区的状态-x:显示给定进程的装原创 2021-04-14 09:47:51 · 1093 阅读 · 0 评论 -
在Intel处理器上,修改mitigations参数使Linux系统运行得更快
您可能听说过影响了许多现代处理器,包括英特尔,AMD,System Z,Power和ARM的某些处理器。幸运的是,内核开发人员已经发布了安全补丁来解决Meltdown/Spectre问题,在最新的内核版本中,默认情况下应用补丁。尽管安全补丁有助于缓解漏洞,但是它们也会影响系统的性能,如果您的系统受到了很好的保护,并且希望获得所有的性能,那么本指南非常适合您。本简要指南介绍了如何通过关闭Spectre和Meltdown缓解措施使Linux系统在Intel CPU上更快地运行。警告 :在实施以下解决方案之前原创 2021-04-08 14:25:54 · 6396 阅读 · 0 评论 -
Linux中7个判断文件系统类型的方法
文件通过文件系统在磁盘及分区上命名、存储、检索以及更新,文件系统是在磁盘上组织文件的方式。文件系统分为两个部分:用户数据和元数据(文件名、创建时间、修改时间、大小以及目录层次结构中的位置等)。在本指南中,我们将用 7 种方法来识别你的 Linux 文件系统类型,如 Ext2、Ext3、Ext4、BtrFS、GlusterFS 等等。1、 使用 df 命令df 命令报告文件系统磁盘空间利用率,要显示特定的磁盘分区的文件系统类型,像下面那样使用 -T 标志:$ df -Th或者$ df -Th |原创 2021-03-26 10:04:52 · 5018 阅读 · 0 评论 -
oh-my-zsh扫描git仓库卡慢的解决方法
oh-my-zsh在git目录下执行命令会卡顿明显,简单的cd和ls都会,插件会读取git的配置信息,如果项目目录下有太多的文件,卡顿会非常明显。可以使用以下命令禁止zsh自动获取git信息,解决卡顿问题:设置 oh-my-zsh 不读取文件变化信息git config --add oh-my-zsh.hide-dirty 1可以再设置 oh-my-zsh 不读取任何 git 信息git config --add oh-my-zsh.hide-status 1如果全局设置,可以执行git原创 2021-02-02 09:35:13 · 2302 阅读 · 0 评论 -
Linux-0.11内核学习-添加系统调用
1、参考资料赵炯博士的网站oldlinuxLinux内核完全注释Linux0.11 源码2、概要操作系统作为软件应用层和底层硬件之间的部分,向下提供服务,向上提供接口。系统调用便是操作系统向上层应用提供的操作底层硬件的和核心服务的接口,也就是API(Application Programming Interface)。我们知道一般API实现的方法是提供函数接口,只需要调用函数就可以实现相应的功能,底层的原理是程序地址的跳转。因为操作系统和用户程序同时存在于内存中,我们当然是不希望操作系统的数据原创 2021-01-18 18:21:35 · 1471 阅读 · 0 评论 -
多核CPU缓存一致性协议MESI
在计算机系统中,CPU高速缓存(英语:CPU Cache)是用于减少处理器访问内存所需平均时间的部件。在金字塔式存储体系中它位于自顶向下的第二层,仅次于CPU寄存器。其容量远小于内存,但速度却可以接近处理器的频率。当处理器发出内存访问请求时,会先查看缓存内是否有请求数据。如果存在(命中),则不经访问内存直接返回该数据;如果不存在(失效),则要先把内存中的相应数据载入缓存,再将其返回处理器。1. CPU高速缓存(Cache Memory)1.1 CPU为何要有高速缓存CPU在摩尔定律的指导下以每18个原创 2020-11-26 17:35:12 · 730 阅读 · 0 评论 -
程序员画图工具Draw.io
程序员不要认为写好代码就好,画好图也很重要,难道你没听过PPT架构师,PPT架构师不就天天画图么。关于画图,俗话说,有图有真相!哦,不对,是一图胜千言。一图胜千言,沟通效率那不是刚刚的。Draw.io 是一个很好用的免费流程图绘制工具。你可以利用它绘制一系列的图表、图示或图形,包括流程图、UML 类图、组织结构图、泳道图、E-R 图、文氏图等等。一大堆的介绍,感觉很高端,其实我真正用的也就几个。这块软件可以在线访问进行画图,也可以下载安装包(绿色版)在本地打开进行画图,都是很方便的。这个画.原创 2020-11-24 13:26:10 · 1389 阅读 · 1 评论 -
graph-easy使用简介
Graph::Easy 是一个处理图形DSL的Perl模块,它有如下功能:提供了一种易懂,可读性很强的图形描述语言一种支持 ASCII Art 的基于网格的布局器可以导出为 Graphviz, VCG (Visualizing Compiler Graphs), GDL (Graph Description LAnguages) 和 GraphML 格式。可以从 Graphviz, VCG 和 GDL 导入图像。1. graph-easy 安装1.1 安装perl# yum install原创 2020-11-22 12:26:33 · 2869 阅读 · 0 评论 -
内存管理单元MMU简介
1. MMUMMU在CPU的配合下(通过页异常触发),实现了线性地址到物理地址的动态映射,为正在CPU上运行的应用程序(进程)提供了一个独立的连续内存空间(线性地址空间,或称虚拟内存空间,其中放置了代码段、数据段和堆栈段),屏蔽了地址分配、内存分配和内存回收等一系列复杂的系统行为。MMU的线性地址转换是通过页表进行的,具体过程如下图所示(摘自intel程序员手册卷3):其实最简单明了的方法是通过一个一维数组来记录映射关系:下标代表线性地址,数组元素内容代表物理地址。可是如此一来,用来表示映射关系的内原创 2020-11-11 10:41:34 · 6373 阅读 · 1 评论 -
Linux 64位进程地址空间分布概况
对于Linux 64位系统,理论上,64bit内存地址可用空间为0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFF(16位十六进制数),这是个相当庞大的空间,Linux实际上只用了其中一小部分(256T)。Linux64位操作系统仅使用低47位,高17位做扩展(只能是全0或全1)。所以,实际用到的地址为空间为0x0000000000000000 ~ 0x00007FFFFFFFFFFF(user space)和0xFFFF800000000000 ~ 0xFFFFFFFFFFF原创 2020-11-05 18:38:16 · 15807 阅读 · 4 评论 -
vmlinuz文件解压方法
[root@centos boot]# od -t x1 -A d vmlinuz | grep “1f 8b 08”0013408 ff e0 1f 8b 08 00 ea 80 b9 52 02 03 ec 5b 7f 74[root@centos boot]# dd if=vmlinuz bs=1 skip=0013410 | zcat > vmlinuxgzip: stdin: decompression OK, trailing garbage ignored记录了9195934+0原创 2020-10-23 23:03:42 · 1778 阅读 · 0 评论 -
比wget更块的工具mwget
mwget和curl/multicurl一样,m就是multi多线程的意思。mwget是wget的升级版,支持多线程下载。1. 下载及安装# git clone https://github.com/rayylee/mwget.git# cd wget# ./configure# make && make install2. 使用# mwget [URL] // 默认开4个线程# mwget -n 10 [URL] // 10个线程下载...原创 2020-10-11 14:37:58 · 10069 阅读 · 1 评论 -
Sun Oracle服务器做磁盘raid
原创 2020-07-14 22:56:33 · 571 阅读 · 0 评论 -
Solaris11创建NFS服务
1. 建立共享share [ -F filesystem ] [ -o options ] [-d description ] pathname-to-resource-F file system type 指定被公享的文件系统类型。-o options 指定客户对资源访问的类型。-d description 功享资源的简单描述。当你share命令不带任何参数运行,他就会被显示。pathname-to-resource 在服务器上共享的资源名字。options:-o 指定了允许客户原创 2020-07-14 22:36:28 · 483 阅读 · 0 评论 -
Solaris11 磁盘分区
环境:2块内置盘,一个16G(系统盘),另一个14GSun Oracle Solaris11 系统1. 查看磁盘选择第一个磁盘2. 识别新硬盘# devfsadm3. 分区选择第一个磁盘选择fdisk建立分区表创建并激活跨整个磁盘的 Solaris fdisk 分区如果不希望 Solaris fdisk 分区跨整个磁盘,请在提示符下指定 n。确定要为 Solaris fdisk 分区保留的磁盘百分比。计算该百分比时,请记住任何现有 fdisk 分区的大小。.翻译 2020-07-14 22:13:23 · 1216 阅读 · 0 评论 -
git常用操作
1. 配置配置邮件地址git config --global user.email "xxx@htzg.com"配置用户名git config --global user.name "xxx"配置默认编辑器为vimgit config --global core.editor vim配置git高亮显示git config --global color.ui auto2.修改最近一次提交commit messagegit commit --amend3. 生成p原创 2020-07-07 11:02:49 · 306 阅读 · 0 评论 -
linux系统内存缓冲和磁盘预留
1. 系统缓冲一般情况下,linux会把可用内存的40%的空间作为文件系统的缓存。当缓存快满时,文件系统将缓存中的数据整体同步到磁盘中。但是系统对同步时间有最大120秒的限制。如果文件系统不能在时间限制之内完成数据同步,则会发生错误。这通常发生在内存很大的系统上。系统内存大,则缓冲区大,同步数据所需要的时间就越长,超时的概率就越大。文件系统缓存的大小是由内核参数vm.dirty_ratio 和 vm.dirty_backgroud_ratio控制决定的。vm.dirty_background_rat原创 2020-07-07 10:08:11 · 2662 阅读 · 0 评论 -
红帽发行版生命周期rhel_life_cycle
1. Red Hat Enterprise Linux 8 Life CycleRed Hat is providing further predictability for Red Hat Enterprise Linux customers, partners, and ISVs. The below map provides details on when minor releases...翻译 2020-01-17 10:16:42 · 3462 阅读 · 0 评论 -
CentOS8 模块化仓库
CentOS8 模块化仓库模块是带有元数据的RPM软件包的集合,因此,它们在存储库中的托管方式与传统RPM软件包的托管方式相同。 除软件包外,此类存储库还必须包含模块随附的模块化元数据(modulemd)。创建一个模块化仓库模块化存储库分为两个步骤:1. 使用`createrepo_c`命令创建存储库2. 使用`modifyrepo_c`命令添加模块化元数据(modulemd)...原创 2020-02-12 15:46:20 · 2289 阅读 · 2 评论 -
CentOS8.1 搭建jenkins
1. 安装jenkins1.1 下载rpm包wget https://pkg.jenkins.io/redhat/jenkins-2.220-1.1.noarch.rpm1.2 安装yum install -y java # 安装java依赖rpm -ivh jenkins-2.220-1.1.noarch.rpm1.3 启动服务systemctl statu...原创 2020-03-31 21:41:27 · 363 阅读 · 0 评论 -
理解Linux的overcommit memory
Memory Overcommit的意思是操作系统承诺给进程的内存大小超过了实际可用的内存。一个保守的操作系统不会允许memory overcommit,有多少就分配多少,再申请就没有了,这其实有些浪费内存,因为进程实际使用到的内存往往比申请的内存要少,比如某个进程malloc()了200MB内存,但实际上只用到了100MB,按照UNIX/Linux的算法,物理内存页的分配发生在使用的瞬间,而不是在申请的瞬间,也就是说未用到的100MB内存根本就没有分配,这100MB内存就闲置了。下面这个概念很重要,是理解翻译 2020-05-22 18:41:15 · 1017 阅读 · 0 评论