
操作系统
文章平均质量分 88
操作系统、服务器、虚拟化、容器化、协议栈
码出钞能力
old coder
展开
-
linux如何判断进程对磁盘是随机写入还是顺序写入?
在Linux系统中,判断进程对磁盘是随机写入还是顺序写入,可以通过以下几种方法:原创 2025-03-10 00:06:47 · 659 阅读 · 0 评论 -
centos8(kernel4.19)查看进程缺页中断情况
eBPF 排查缺页中断原创 2025-03-07 03:25:38 · 200 阅读 · 0 评论 -
通过crash分析vmcore(以分析ipi引发的soft lockup举例)
crash 是一个被广泛使用的内核崩溃转储文件分析工具,掌握 crash 的使用技巧,对于定位问题有着十分重要的作用。转载 2025-01-01 10:51:11 · 129 阅读 · 0 评论 -
smp_call_function_many死锁问题分析
soft lockup、smp_call_function、smp_call_function_many转载 2025-01-01 00:27:07 · 112 阅读 · 0 评论 -
linux soft lockup的分类和定位方法
梳理一下soft lockup问题触发场景和解决方法转载 2025-01-01 00:12:59 · 129 阅读 · 0 评论 -
linux kernel soft lockup/hard lockup简介及其解决思路
从代码入手分析linux(4.4.83)是如何实现lockup的探测转载 2025-01-01 00:10:09 · 189 阅读 · 0 评论 -
Linux Softlockup与hardlockup检测机制(又名:nmi_watchdog)
nmi_watchdog转载 2025-01-01 00:02:53 · 135 阅读 · 0 评论 -
对golang的io型进程进行off-cpu分析
性能分析之off-cpu火焰图原创 2024-12-18 15:00:08 · 739 阅读 · 0 评论 -
linux火焰图的生成
linux程序性能分析原创 2019-12-21 22:03:18 · 1099 阅读 · 0 评论 -
linux下观察进程捕获信号的情况
观察linux进程接收信号的情况原创 2024-12-17 14:29:19 · 402 阅读 · 0 评论 -
K8S CNI:利用ipvlan打通容器与宿主机的平行网络
很多⼈开始尝试将容器⽹络和公司所有物理机的⽹络打通,也就是形成⼀个平⾏⽹络体系。这个 体系,去除了封包和解包操作,也不再使⽤ kube-proxy 组件⽣成iptables规则。⽹络的性能⾮常⾼。转载 2024-11-14 01:03:38 · 212 阅读 · 0 评论 -
Docker容器与虚拟化技术:容器运行时说明与比较
本文详细探讨了容器运行时理论,包括Docker、containerd、CRI-O和KataContainers等容器运行时的比较,以及Kubernetes(K8S)在实现多租户时遇到的问题,尤其是与runC共享内核的挑战。还介绍了KataContainers作为解决方案,通过虚拟机隔离提供安全的多租户环境。转载 2024-11-08 23:35:47 · 82 阅读 · 0 评论 -
Docker、KVM和裸机的性能比较(20210520)
KVM和Docker都为CPU和内存性能带来了微不足道的开销(除非在极端情况下)。对于I/O密集型工作负载,应该谨慎使用这两种形式的虚拟化。转载 2024-11-08 01:43:32 · 405 阅读 · 0 评论 -
实验kubernetes的CPU绑定策略
static 策略针对具有整数型 CPU requests 的 Guaranteed Pod, 它允许该类 Pod 中的容器访问节点上的独占 CPU 资源。这种独占性是使用 cpuset cgroup 控制器来实现的。原创 2024-10-14 16:39:18 · 1105 阅读 · 0 评论 -
linux hugepages
使用hurgepage的内存不能被其他的进程使用,所以一定要合理设置这个值,避免造成浪费。使用超过8G物理内存的系统,有人推荐使用HugePage。原创 2024-10-11 00:49:11 · 527 阅读 · 0 评论 -
linux创建固定大小的文件夹用于测试
linux上有时由于一些特殊需要,我们需要限制一个文件夹的大小,有两种方法可以实现。原创 2024-09-25 19:15:39 · 426 阅读 · 0 评论 -
iptables的流量跟踪debug
使用iptables trace跟踪iptables流量转载 2024-07-15 22:49:18 · 126 阅读 · 0 评论 -
LVS基本介绍
Linux Virtual Server 负载调度器原理讲解转载 2024-03-29 17:40:31 · 106 阅读 · 0 评论 -
linux下删除正在使用的文件(bin、so)会发生什么?
删除运行中的bin文件和so文件会导致崩溃吗?转载 2024-01-08 22:34:43 · 700 阅读 · 1 评论 -
Windows系统使用QEMU搭建ARM+Linux开发环境
分享好文,开发环境工具的安装使用,内附下载地址。转载 2023-10-19 14:02:20 · 1894 阅读 · 0 评论 -
CentOS/RHEL 7/8 进入单用户模式的三种方法(linux救砖指南)
linux无法正常登录后的急救模式转载 2023-07-20 14:01:21 · 6055 阅读 · 0 评论 -
epoll的实现细节
思考两个问题,就绪队列应该应使用什么数据结构?eventpoll应使用什么数据结构来管理通过epoll_ctl添加或删除的socket?转载 2023-02-01 22:10:01 · 350 阅读 · 0 评论 -
一文详解epoll的实现原理
epoll涉及的数据结构分析转载 2023-02-01 21:58:31 · 522 阅读 · 0 评论 -
epoll边沿触发/水平触发实现分析
ET模式可减少epoll_wait函数的调用,从而减少系统开销,提高效率。转载 2023-02-01 21:49:04 · 1463 阅读 · 1 评论 -
用户态和内核态的内存管理
若把所有地址空间都给内存,那么用户进程怎么使用内存?怎么保证内核使用内存和用户进程不起冲突?转载 2022-10-25 19:04:59 · 2018 阅读 · 1 评论 -
操作系统面经
面试遇到的操作系统相关问题以及我自己的想法整理一下转载 2022-10-25 18:57:09 · 148 阅读 · 0 评论 -
你对Linux下的实时性应该多点了解
本文讲述一些有利于提高xenomai实时性的配置建议,部分针对X86架构,但它们的底层原理相通,同样适用于其他CPU架构和系统,希望对你有用。转载 2022-06-07 19:19:09 · 1968 阅读 · 2 评论 -
从Linux源码角度看Epoll,透过现象看本质
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计就导致了poll的效率的低下。转载 2022-05-05 17:04:21 · 335 阅读 · 0 评论 -
Linux内核学习经验总结
刚开始学内核的时候,不要执着于一个方面,不要专注于一个子系统就一头扎到实际的代码行中去,因为这样的话,牵涉的面会很广,会碰到很多困难,容易产生挫败感转载 2021-04-15 21:39:41 · 144 阅读 · 0 评论 -
CPU之战:ARM vs Intel
智能计算芯世界 6 days agoARM是移动互联网时代的芯片IP霸主。ARM公司在全球数字IC设计领域具有举足轻重地位,其IP在智能手机、可穿戴设备、网络基础设施等领域拥有极高的市场份额。在OS+CPU体系中,ARMdroid(ARM+Android)体系战胜了PC时代wintel(Windows+Intel)体系,成为移动互联网时代的霸主。手机芯片:ARM中止合作短期对华为影响可控。华为海思基于ARM授权研发了手机SoC芯片、基带芯片、服务器芯片、AI芯片等。华为目前拥有最新的AR..转载 2021-10-15 20:50:12 · 1363 阅读 · 0 评论 -
CPU可以跑多快?地球到火星的距离告诉你!
我们在之前的文章中介绍了一张出自Google大神 Jeff Dean的图,这张图展示系统中各种关键操作的时延具体有多少。需要注意的是这张图上的数据自2012年后就没有再更新过了,统计自2020年的最新数据见这里:这张图中一个小的黑方块代表1纳秒,一个蓝色的方块代表100纳秒,一个绿色的方块代表10微秒,一个红色的方块代表1毫秒。尽管这种表示方法已经比第一张图形象很多了,但在我们(人类)看来对这些纳秒没太多概念,毕竟人类的反应时间仅仅0.2 -0.3秒,比这更短的时间人类是没有太多感.转载 2021-10-15 20:44:58 · 247 阅读 · 0 评论 -
CPU加了缓存后,有人急了~
Hi,我是CPU一号车间的阿Q,还记得我吗,真是好久不见了~我所在的CPU是一个八核CPU,就有八个工作车间,那运行起来速度杠杆的~虚拟地址翻译一大早,我们一号车间MMU(内存管理单元)部门的小黑就来到领导办公室,恰好我也在。“领导,听说您同意了阿Q他们的方案,给每个车间都划拨了缓存建设预算?”“你这小子,消息还挺灵通的。没错,内存那家伙实在太慢了,加了缓存后,不用每次都从内存读取数据,能让咱们的性能提升不少”,领导说到。“那我们MMU部门也要申请一笔经费”,小黑说到。领导眉转载 2021-10-15 20:38:50 · 105 阅读 · 0 评论 -
一文读懂 | Linux 网络命名空间
1 前景回顾1.1 Linux网络Linux是因特网的产物, 这是无可争议的. 首先, 得感谢因特网通信, Linux的开发过程证明了一个很多人曾持有的观点是荒谬的 : 对分散在世界各地的一组程序员进行项目管理是不可能的. 第一个内核源代码版本是在十多年前通过FTP服务器提供的, 此后网络便成了数据交换的支柱, 无论是概念和代码的开发, 还是内核错误的消除, 都是如此.内核邮件列表是个活生生的例子, 它几乎没有改变过. 每个人都能够看到最新贡献的代码, 并为促进Linux的开发提出自己的意见,.转载 2021-10-15 20:36:47 · 966 阅读 · 0 评论 -
Linux内核角度分析tcpdump原理(二)
上篇文章介绍了在内核角度tcpdump的抓包原理(1),主要流程如下: 应用层通过libpcap库:调用系统调用创建socket,sock_fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));tcpdump在socket创建过程中创建packet_type(struct packet_type),并挂载到全局的ptype_all链表上。(同时在packet_type设置回调函数packet_rcv。 网络收包/发包时,会在各自的处理函数(收包转载 2021-10-15 20:34:24 · 916 阅读 · 0 评论 -
再谈Linux epoll惊群问题的原因和解决方案
缘起近期排查了一个问题,epoll惊群的问题,起初我并不认为这是惊群导致,因为从现象上看,只是体现了CPU不均衡。一共fork了20个Server进程,在请求负载中等的时候,有三四个Server进程呈现出比较高的CPU利用率,其余的Server进程的CPU利用率都是非常低。中断,软中断都是均衡的,网卡RSS和CPU之间进行了bind之后依然如故,既然系统层面查不出个所以然,只能从服务的角度来查了。自上而下的排查首先就想到了strace,没想到一下子就暴露了原形:acce...转载 2021-10-08 19:59:50 · 602 阅读 · 0 评论 -
特斯拉遇上 CPU:程序员的心思你别猜
18世纪流水线的诞生带来了制造技术的变革,人类当今拥有琳琅满目物美价廉的商品和流水线技术的发明密不可分,因此当你喝着可乐、吹着空调、坐在特斯拉里拿着智能手机刷这篇文章时需要感谢流水线技术。一段有趣的代码有这样一段代码:for (int k = 0; k < 10000; k++){ for (int i = 0; i < arr.size(); i++) { if (arr[i] > 256) sum += arr[i]; }}这段代码非常简单,给定一个数组,计算所有大转载 2021-10-08 19:45:55 · 148 阅读 · 0 评论 -
Linux内核角度分析tcpdump原理(一)
一、tcpdump的用途tcpdump是Linux系统抓包工具,tcpdump基于libpcap库,根据使用者的定义对网络上的数据包进行截获,tcpdump可以将网络中传送的数据包中的"头"完全截获下来提供分析,支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助去掉无用的信息。通过tcpdump可以分析很多网络行为,比如丢包重传、详细报文、tcp分组等,总之通过tcpdunp可以为各种网络问题进行排查,可以在服务器上将捕获的数据包信息以pcap文件保存下来,..转载 2021-10-08 19:40:34 · 4650 阅读 · 0 评论 -
一次限制进程的 CPU 用量的实操过程
给大家分享一个事情。背景是这样的,我们要测试某个第三方 SDK 运行性能,这是个 CPU 密集型的服务。我想评估一下它运行一遍到底有多吃 CPU,以便评估上线后我们需要部署多少台服务器。我们是在一台 16 物理核的机器上测试的,我们的想法是把它启动起来,然后执行一遍。用耗时乘以 16 核那就是总的 CPU 耗时开销。不过不巧的是我们发现这个货在并发上做的并不是特别好,运行的前半段里只能打满一个核,而后半段可以把整台机器上所有 16 核都打满。这样就没法准确估算它的 CPU 消耗了。最先我想到的方案是转载 2021-09-24 19:43:46 · 556 阅读 · 0 评论 -
深入理解Kubernetes容器网络
在Kubernetes中要保证容器之间网络互通,网络至关重要。而Kubernetes本身并没有自己实现容器网络,而是通过插件化的方式自由接入进来。在容器网络接入进来需要满足如下基本原则: Pod无论运行在任何节点都可以互相直接通信,而不需要借助NAT地址转换实现。 Node与Pod可以互相通信,在不限制的前提下,Pod可以访问任意网络。 Pod拥有独立的网络栈,Pod看到自己的地址和外部看见的地址应该是一样的,并且同个Pod内所有的容器共享同个网络栈。 容器网络...转载 2021-09-18 20:34:24 · 213 阅读 · 0 评论 -
为什么 P8 程序员的代码你写不出来?零拷贝了解一下
计算机处理的任务大体可以分为两类:CPU密集型与IO密集型。当前流行的互联网应用更多的属于IO密集型,传统的IO标准接口都是基于数据拷贝的,这篇文章我们主要关注该怎样从数据拷贝的角度来优化IO性能,让你的程序在IO性能方面赶超P8。为什么IO接口要基于数据拷贝?为了让广大码农们更好的沉迷于自己的一亩三分地,防止ta们分心去关心计算机中的硬件资源分配问题,操作系统诞生了。操作系统本质上就是一个管家,目的就是更加公平合理的给各个进程分配硬件资源,在操作系统出现之前,程序员需要直面各类硬件,就像这转载 2021-09-18 20:30:58 · 154 阅读 · 0 评论