<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[看我眼色行事的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/maybeYoc</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; maybeYoc]]></copyright><item><title><![CDATA[rust中Atomic Ordering含义总结]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135440507</link><guid>https://blog.csdn.net/maybeYoc/article/details/135440507</guid><author>maybeYoc</author><pubDate>Sun, 07 Jan 2024 15:46:59 +0800</pubDate><description><![CDATA[Ordering除了可以对绑定到单个原子数据类型的操作上，也可以用在fence约束多条原子操作上，防止编译器和处理器对内存操作的重排，添加内存屏障（memory barrier），这也是构建临界区的一种方式。]]></description><category></category></item><item><title><![CDATA[mdbook 使用 Rust 创建书籍的 Markdown 工具]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135439686</link><guid>https://blog.csdn.net/maybeYoc/article/details/135439686</guid><author>maybeYoc</author><pubDate>Sun, 07 Jan 2024 14:41:32 +0800</pubDate><description><![CDATA[以及一些 vscode 插件提供的 markdown 编辑插件，推荐一个开源实用的由 rust 官方维护的。使用 Rust 创建书籍的 Markdown 工具。当我们使用 markdown 编写文档时，目前有。]]></description><category></category></item><item><title><![CDATA[记一次x86 kvm虚机缺失 tlb flush 引发的 CVE 漏洞]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135405849</link><guid>https://blog.csdn.net/maybeYoc/article/details/135405849</guid><author>maybeYoc</author><pubDate>Fri, 05 Jan 2024 16:26:42 +0800</pubDate><description><![CDATA[linux 5.5 版本以下才会触发，之后的版本已经修复该问题。触发现象：在x86 intel 芯片上的 kvm 虚机环境中：当有多个进程或者多个线程在频繁或者多次执行 malloc，write，read，free 操作时，有概率触发任务程序崩溃产生 core dump 或者程序 abort。该问题触发对应。首先描述一下该 CVE 漏洞原文：上述崩溃触发原因是缺少 TLB flush，这可能使运行 KVM 客户机中的进程访问到它不应该访问的客户机中的内存位置。]]></description><category></category></item><item><title><![CDATA[kvm虚拟化 steal time 机制详解]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135404015</link><guid>https://blog.csdn.net/maybeYoc/article/details/135404015</guid><author>maybeYoc</author><pubDate>Fri, 05 Jan 2024 11:10:37 +0800</pubDate><description><![CDATA[steal time 是指在虚拟化的环境下，管理机（host os，如 linux）窃取的虚拟机中的时间（虚拟机上的一个 vcpu 对应主机上一个线程，当该线程未在运行时，则是主机窃取的虚机时间），即 vcpu 没有在运行的时间。在虚机中执行 top 命令，其中有一个 st 字段，该字段数据则是描述主机窃取时间占比的。ps：对于真实物理机器：该字段永远为 0，如果是 guest os：该字段可能不为0，如果该字段占比较大，说明主机任务比较繁忙，该虚机被调度较少。]]></description><category></category></item><item><title><![CDATA[kvm 虚拟化原理补充：x86虚拟化相关原理]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135403576</link><guid>https://blog.csdn.net/maybeYoc/article/details/135403576</guid><author>maybeYoc</author><pubDate>Fri, 05 Jan 2024 10:38:43 +0800</pubDate><description><![CDATA[当客户机执行一些特权指令或者发生外部事件时，比如 IO 访问，对控制寄存器的操作，MSR 的读写等，都会导致物理 cpu 发生 vm exit，停止运行客户机，将客户机保存到 VMCS 中，主机状态装入物理处理器中，处理器进入 root 模式，kvm 取得控制权，通过读取 VMCS 中 VM_EXIT_REASON 字段得到引起 vm exit 的原因。是否有其他路径抢占？退出之后，检查退出原因，如果有时钟中断发生，则插入一个时钟中断，如果是用户空间的中断发生，则退出原因填写 KVM_EXIT_INTR。]]></description><category></category></item><item><title><![CDATA[arm64虚拟化技术与kvm实现原理分享]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135403043</link><guid>https://blog.csdn.net/maybeYoc/article/details/135403043</guid><author>maybeYoc</author><pubDate>Fri, 05 Jan 2024 10:28:07 +0800</pubDate><description><![CDATA[hypervisor（guest 管理机） 又称为 VMM（virtual machine monitor）（1）软件虚拟化不借助硬件支持，通过软件完整的模拟一台虚拟机 => qemu tcg。（2）硬件虚拟化根据 VMM 实现不同，硬件虚拟化包含 type1 hypervisor 和 type2 hypervisor 两种类型。type1（XEN，sel4） hypervisor 直接运行在硬件上，并管理系统中所有的硬件和虚拟机资源。]]></description><category></category></item><item><title><![CDATA[linux-6.0 内核存储栈全景图]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135359552</link><guid>https://blog.csdn.net/maybeYoc/article/details/135359552</guid><author>maybeYoc</author><pubDate>Wed, 03 Jan 2024 11:33:38 +0800</pubDate><description><![CDATA[linux 存储栈原图地址：https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram]]></description><category></category></item><item><title><![CDATA[multipath 内核接口及框架介绍]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135359187</link><guid>https://blog.csdn.net/maybeYoc/article/details/135359187</guid><author>maybeYoc</author><pubDate>Wed, 03 Jan 2024 11:30:47 +0800</pubDate><description><![CDATA[可以看到上述路径中在计算节点使用了 mutlipath 聚合路径来实现负载均衡和路径切换等。用户态工具相关：启动脚本udev 命令规则用户工具/usr/sbin/multipathd 守护进程，监听系统中路径状态的变化，并做相应的处理。/usr/sbin/mpathpersist SCSI PR命令工具，主要用于隔离。/usr/sbin/mpathconf 修改多路径配置/usr/sbin/kpartx DeviceMapper虚拟设备创建工具。]]></description><category></category></item><item><title><![CDATA[云主机存储网络相关技术概念及网络拓扑介绍]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135358755</link><guid>https://blog.csdn.net/maybeYoc/article/details/135358755</guid><author>maybeYoc</author><pubDate>Wed, 03 Jan 2024 11:18:17 +0800</pubDate><description><![CDATA[早期的 SAN 存储系统中，服务器与交换机的数据传输是通过光纤进行的，因为服务器是把 SCSI 指令传输到存储设备上，不能走普通 LAN 网的 IP 协议，所以需要使用 FC 传输， 因此这种 SAN 就叫 FC-SAN。DRBD是镜像块设备，是按数据位镜像成一样的数据块。后期出现了用 IP 协议封装的 SAN，可以完全走普通 LAN 网络，因此叫做 IP-SAN，其中最典型的就是现在热门的 iSCSI。FC SAN、IP SAN 都要有存储管理软件（如卷管理、数据的快照、镜像、备份、恢复、 归档等等）。]]></description><category></category></item><item><title><![CDATA[Linux iscsi/target 内核模块框架详细解析]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135357641</link><guid>https://blog.csdn.net/maybeYoc/article/details/135357641</guid><author>maybeYoc</author><pubDate>Wed, 03 Jan 2024 11:06:26 +0800</pubDate><description><![CDATA[SCSI（Small Computer System Interface），即小型计算机系统接口。SCSI 是一种智能的通用接口标准。一种用于计算机和智能设备之间（硬盘、软驱、光驱、打印机、扫描仪等）系统级接口的独立处理器标准。它是各种计算机与外部设备之间的接口标准。SCSI 是个多任务接口，设有母线仲裁功能。挂在一个 SCSI 母线上的多个外设可以同时工作。SCSI 上的设备平等占有总线。SCSI 接口可以同步或异步传输数据。]]></description><category></category></item><item><title><![CDATA[linux 热补丁机制基本概念]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135356089</link><guid>https://blog.csdn.net/maybeYoc/article/details/135356089</guid><author>maybeYoc</author><pubDate>Wed, 03 Jan 2024 10:21:14 +0800</pubDate><description><![CDATA[内核实现 livepatch 对架构，编译器等均有一些要求，比如编译器为架构提供可靠栈回溯，支持动态 ftrace regs 等，否则对应架构很难实现 livepatch，目前有 x86，powerpc，s390 能在内核直接支持 livepatch。kpatch 修补的单位是函数，而不是数据结构，如果补丁对数据结构进行了修改，那一般会出问题，需要重新制作补丁，默认不允许修改数据结构，如果这样做了，kpatch-build 可能会抛出错误。字符串，从打印中可以看到补丁应用成功，卸载补丁后恢复原来的字符串。]]></description><category></category></item><item><title><![CDATA[arm64 UAO/PAN 特性对用户空间边界读写的影响（copy_from/to_user）]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135351626</link><guid>https://blog.csdn.net/maybeYoc/article/details/135351626</guid><author>maybeYoc</author><pubDate>Tue, 02 Jan 2024 22:31:43 +0800</pubDate><description><![CDATA[(1)（2）（3）在调用从用户空间拷贝的 api 时首先会调用 uaccess_enable_not_uao 来激活访问用户空间，这里其实调用的就是 SET_PSTATE_PAN(0) （先暂时不看 UAO 特性，假设这里没有启用 UAO 特性），禁用了 PAN ，那么此时使用 ldr/str 指令访问用户空间不会出现问题，当完成访问后调用 SET_PSTATE_PAN(1)再次开启 PAN 特性，所以这里就是在特殊的访问 api 中临时禁用 PAN，以便顺利访问用户空间。]]></description><category></category></item><item><title><![CDATA[linux stop_machine 停机机制应用及一次触发 soft lockup 分析]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135350981</link><guid>https://blog.csdn.net/maybeYoc/article/details/135350981</guid><author>maybeYoc</author><pubDate>Tue, 02 Jan 2024 22:05:47 +0800</pubDate><description><![CDATA[可以看到报告 lockup 的点是 rcu_momentary_dyntick_idle 这个函数里面，触发 lockup 的线程是迁移线程migration/85:537。也就是说在迁移线程中调用 rcu_momentary_dyntick_idle函数触发了 lockup。该函数逻辑为：在 stop machine cpu 停机的状态下执行 msdata 中指定的回调。]]></description><category></category></item><item><title><![CDATA[一次cfs组调度不公平引起的负载不均衡分析及cfs组调度深入探索（五）]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135349336</link><guid>https://blog.csdn.net/maybeYoc/article/details/135349336</guid><author>maybeYoc</author><pubDate>Tue, 02 Jan 2024 20:31:03 +0800</pubDate><description><![CDATA[根据之前分析，可以得到下面几个前提条件：1）对于 cfs_rq 的 load_sum 来源于任务节点下下所有调度实体 se 的 load_sum * se->load.weight 之和，同时由调度实体 attch/deattch 附加或者移除 load_sum。同时在对 cfs_rq 进行       pelt 更新时，也是根据当前 cfs_rq->load.weight * contrib 累加得来。其中 contrib 对于 cfs_rq 是当前周期的时间片 delta。]]></description><category></category></item><item><title><![CDATA[一次cfs组调度不公平引起的负载不均衡分析及cfs组调度深入探索（四）]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135349056</link><guid>https://blog.csdn.net/maybeYoc/article/details/135349056</guid><author>maybeYoc</author><pubDate>Tue, 02 Jan 2024 20:26:47 +0800</pubDate><description><![CDATA[那么为什么在（2）中 update_load_avg 第三个参数为零（该参数表示是否需要对对应的任务组负载进行更新），for_each_leaf_cfs_rq_safe 属于自底向上的依次遍历，那么在更新完child cfs_rq 后，在遍历下一个cfs_rq时拿到的即是 parent cfs_rq，因为我们每次都会对cfs_rq进行负载更新，所以在对 se 负载同步和广播负载时我们不需要多余的去更新任务组负载，反正遍历下一个节点时，如果负载有更新均会更新到任务组负载。]]></description><category></category></item><item><title><![CDATA[一次cfs组调度不公平引起的负载不均衡分析及cfs组调度深入探索（三）]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135348615</link><guid>https://blog.csdn.net/maybeYoc/article/details/135348615</guid><author>maybeYoc</author><pubDate>Tue, 02 Jan 2024 20:14:06 +0800</pubDate><description><![CDATA[对于 patch，在任务设置到任务组的时候在调用 attach_entity_cfs_rq 时，patch将任务对应的 cfs_rq（这里是 cfs_rq[30]）将其加入到链表中，那么只要这个cfs_rq还有负载，就会在负载均衡时一直进行负载更新，直至移除负载或者衰减为0，那么此时向任务组贡献的load_avg将会正确衰减回归正确水平。从上述逻辑中可以看到，对于非睡眠任务负载会直接移除，并更新整个任务组负载，如果任务睡眠，负载并不会立即移除，而是在唤醒时附加到原有 cfs_rq->removed 中。]]></description><category></category></item><item><title><![CDATA[一次cfs组调度不公平引起的负载不均衡分析及cfs组调度深入探索（一）]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135344468</link><guid>https://blog.csdn.net/maybeYoc/article/details/135344468</guid><author>maybeYoc</author><pubDate>Tue, 02 Jan 2024 17:30:04 +0800</pubDate><description><![CDATA[cfs group 深入分析，记录cfs组调度不公平性触发原理]]></description><category></category></item><item><title><![CDATA[linux top命令中 cpu 利用率/mem 使用率与load average平均负载计算方式]]></title><link>https://blog.csdn.net/maybeYoc/article/details/135341697</link><guid>https://blog.csdn.net/maybeYoc/article/details/135341697</guid><author>maybeYoc</author><pubDate>Tue, 02 Jan 2024 16:29:29 +0800</pubDate><description><![CDATA[top 命令是 Linux 上一个常用的系统监控工具，它经常用来监控 Linux 的系统状态，是常用的性能分析工具，能够显示较全的系统资源信息，包括系统负载，CPU 利用分布情况，内存使用，进程资源占用情况等。这里主要看进程的 CPU%, MEM% 和 load averge 字段。]]></description><category></category></item><item><title><![CDATA[ftrace 原理详细分析]]></title><link>https://blog.csdn.net/maybeYoc/article/details/132079800</link><guid>https://blog.csdn.net/maybeYoc/article/details/132079800</guid><author>maybeYoc</author><pubDate>Thu, 03 Aug 2023 11:29:15 +0800</pubDate><description><![CDATA[ftrace 机制实现分析，ftrace 为内核调试带来了全新的跟踪机制，基于此也衍生了更过的 tracer，如 irqsoff，premmptoff，blk，stacktrace 等等一些内核 trace 机制]]></description><category></category></item><item><title><![CDATA[tracepoint 原理详细分析]]></title><link>https://blog.csdn.net/maybeYoc/article/details/132079443</link><guid>https://blog.csdn.net/maybeYoc/article/details/132079443</guid><author>maybeYoc</author><pubDate>Thu, 03 Aug 2023 11:23:48 +0800</pubDate><description><![CDATA[tracepoint 机制是内核的静态事件点跟踪机制，提供了一系列的内核事件点跟踪，可以在 ftrace，perf，bpf 等其他跟踪器一起使用，为用户提供强大的内核调试机制和实际工程作用。]]></description><category></category></item></channel></rss>