Linux
木棉上的光
公众号:不止于Java
Github:https://github.com/cyxpdc?tab=repositories
邮箱:[email protected]
展开
-
《Linux内核技术实战课》总结四:CPU
总览现代处理器:cpu伪共享:两个 CPU 上并行运行着两个不同线程,它们同时从内存中读取两个不同的数据,这两个数据的地址在物理内存上是连续的,它们位于同一个 Cache Line 中;CPU 从 内存中读数据到 Cache 是以 Cache Line 为单位的,所以该 Cache Line 里的数据被同时 读入到了这两个 CPU 的各自 Cache 中;紧接着这两个线程分别改写不同的数据,每次改写 Cache 中的数据都会将整个 Cache Line 置为无效;因此,虽然这两个线程改写的数据原创 2020-12-12 11:46:44 · 2185 阅读 · 0 评论 -
《Linux内核技术实战课》总结三:网络
TCP配置项连接过程:断开过程:TCP收发包配置项发送:TCP 发送缓冲区太小,导致业务延迟很大的问题可以使用 systemtap 之类的工具在内核里面打点来进行观察,如果观察到 sk_stream_wait_memory 这个事件,就意味着 TCP 发送缓冲区太小 了,需要调大 wmem_max 和 tcp_wmem:max 的值tcp_mem 是总连接数的内存限制,如果达到限制而无法发包或者产生抖动,可以观测静态观测点:sock_exceed_buf_limit,如果有日志输出(即发生原创 2020-12-12 11:45:01 · 1964 阅读 · 0 评论 -
《Linux内核技术实战课》总结二:内存泄漏
总览内存泄漏:内存被分配出去后 一直没有被释放,导致这部分内存无法被再次使用,更严重的是,指向这块内存空间的指针都不存在了,进而再也无法访问这块内存空间场景:服务器中的后台任务持续运行,系统中可用内存越来越少; 应用程序正在运行时忽然被 OOM kill 掉了; 进程看起来没有消耗多少内存,但是系统内存就是不够用了在遇到系统内存不足时,首先要做的是查看 /proc/meminfo 中哪些内存类型消耗较多,然后再去做针对性分析泄漏的内存可能是应用程序的内存泄漏、内核(操作系统)的内存泄漏;应用程序的原创 2020-12-12 11:42:57 · 1436 阅读 · 1 评论 -
《Linux内核技术实战课》总结一:PageCache
总览Page Cache:内核管理的内存场景:服务器的 load 飙高; 服务器的 I/O 吞吐飙高; 业务响应时延出现大的毛刺; 业务平均访问时延明显增加应用程序产生Page Cache的逻辑示意图,是在应用程序读写文件的过程中产生的产生,即被分配:有两种方式1 标准 I/O 是写的 (write) 用户缓冲区 (Userpace Page 对应的内存),然后再将用户缓冲区里的数据拷贝到内核缓冲区 (Pagecache Page 对应的内存);如果是读的 (read) 话则 是先从内核缓冲区拷原创 2020-12-12 11:39:21 · 2271 阅读 · 0 评论 -
《Linux性能优化》总结:cpu性能、内存性能、文件系统性能、网络性能
来源极客时间总览uptime可查看系统平均负载:平均活跃进程数(可运行、不可中断)cpu个数:grep ‘model_name’ /proc/cpuinfo | wc -lmpstat:实时查看cpu性能指标(整体)pidstat:实时查看进程的cpu、内存、io、上下文切换等性能指标stress:压测iostat:io状态超过百分之70的使用率就该警醒cpucpu上下文切换:进程/线程/中断上下文切换vmstat:查看系统上下文切换情况、系统内存使用情况pidstat -w原创 2020-08-26 10:54:13 · 402 阅读 · 0 评论 -
《趣谈Linux》总结十:虚拟化
37 虚拟化Linux越来越强大了,例如,内存动不动就是百G内存,网络设备一个端口的带宽就能有几十G甚至上百G,存储在数据中心至少是PB级别的(一个P是1024个T,一个T是1024个G)。这自然有了一些不灵活的地方:· 资源大小不灵活:有时候我们不需要这么大规格的机器,可能只想尝试一下某些新业务,申请个4核8G的服务器试一下,但是不可能采购这么小规格的机器。无论每个项目需要多大规格的机...原创 2019-11-20 09:33:12 · 437 阅读 · 0 评论 -
《趣谈Linux》总结九:容器化
39 容器容器有一定的隔离,但是隔离性没有虚拟化那么好,仅仅做简单的封装。当然封装也带来了好处,一个是打包,二是标准;容器实现封闭的环境主要靠两种技术:一种是看起来是隔离的技术,称为namespace(命名空间);在每个 namespace 中的应用看到的,都是不同的 IP 地址、用户空间、进程 ID 等。一种是用起来是隔离的技术,称为cgroup(网络资源限制);即整台机器有很多的...原创 2019-11-20 09:29:18 · 298 阅读 · 0 评论 -
《趣谈Linux》总结八:网络系统
33 Socket通信无论是用socket操作TCP,还是UDP,首先都要调用socket函数,socket函数用于创建一个socket的文件描述符,唯一标识一个socket;把它叫作文件描述符,是因为在内核中会创建类似文件系统的数据结构,并且后续的操作都有用到它:int socket(int domain, int type, int protocol);三个参数的含义:domai...原创 2019-11-20 09:26:36 · 425 阅读 · 0 评论 -
《趣谈Linux》总结七:进程间通信
29 进程间通信29.1 管道模型上一个阶段完全做完,才将输出结果交给下一个阶段“|”就是一个管道。它会将前一个命令的输出,作为后一个命令的输入。管道是一种单向传输数据的机制,它其实是一段缓存,里面的数据只能从一端写入,从另一端读出。如果想互相通信,需要创建两个管道才行。管道分为两种类型:“|” 表示的管道称为匿名管道,意思就是这个类型的管道没有名字,用完了就销毁了。竖线代表的管...原创 2019-11-20 09:23:14 · 645 阅读 · 0 评论 -
《趣谈Linux》总结六:输入输出系统
26 输入与输出输入输出系统是一个生态,类比售前售后生态体系,这不仅仅是招聘一些售前和售后员工,而是应该建立一套体系让供应商、渠道帮着卖,形成一个生态。计算机系统的输入和输出系统有:键盘、鼠标、显示器、网卡、硬盘、打印机、CD/DVD等等,多种多样。这样方便用户使用了,但是对于操作系统来讲,却是一件复杂的事情,因为这么多设备,形状、用法、功能都不一样,怎么才能统一管理起来呢?核心思想:加中...原创 2019-11-20 09:19:06 · 257 阅读 · 0 评论 -
《趣谈Linux》总结五:文件系统
22 文件系统可以永久保存文件22.1 功能规划需要考虑的问题:1 文件系统要有严格的组织形式,使得文件能够以块为单位进行存储2 文件系统中也要有索引区,用来方便查找一个文件分成的多个块都存放在了什么位置3 如果文件系统中有的文件是热点文件,近期经常被读取和写入,文件系统应该有缓存层4 文件应该用文件夹的形式组织起来,方便管理和查询,即分门别类,形成树形结构,也可以减少命名冲突,因为...原创 2019-11-20 09:14:10 · 324 阅读 · 0 评论 -
《趣谈Linux》总结四:内存管理
16 内存管理(上)-规划进程内存空间布局每个进程应该有自己的内存空间。内存空间都是独立的、相互隔离的。对于每个进程来讲,看起来应该都是独占的。16.1 独享内存空间的原理内存都被分成一块一块儿的,都编好了号,这些一块一块的地址是实实在在的地址,通过这个地址我们就能够定位到物理内存的位置;如果所有进程都使用这些地址,同时发生同一个位置的写操作时很容易起冲突所以使用虚拟地址:物理地址对...原创 2019-11-20 09:10:07 · 558 阅读 · 2 评论 -
《趣谈Linux》总结三:进程/线程
8 进程管理有了系统调用,就可以开始创建进程了8.1 通过写代码使用系统调用创建一个进程在 Linux 上写程序和编译程序,也需要一系列的开发套件,就像 IDEA 一样;运行下面的命令,就可以在 centOS 7 操作系统上安装开发套件:yum -y groupinstall "Development Tools"在 Windows 上写的程序,都会被保存成.h 或者.c 文件,容易...原创 2019-11-20 09:01:52 · 386 阅读 · 0 评论 -
《趣谈Linux》总结二:系统初始化
4 x86架构对于linux来说,如果下面的硬件环境千差万别,就会很难集中精力做出让用户易用的产品;毕竟天天适配不同的平台,就已经够辛苦了;x86 架构就是这样一个开放的平台。4.1 计算机的工作模式对于一个计算机来讲,最核心的就是CPU(Central Processing Unit,中央处理器)。这是这台计算机的大脑,所有的设备都围绕它展开。CPU 和其他设备连接,要靠一种叫作总...原创 2019-11-20 08:52:24 · 445 阅读 · 0 评论 -
《趣谈Linux》总结一:Linux前导知识
1 Linux综述将linux比作一个外包公司,则有如下图的运作:操作系统内核体系结构图:简要叙述鼠标和键盘是计算机的输入设备。大部分的普通用户想要告诉计算机应该做什么,都是通过这两个设备。例如,用户移动了一下鼠标,鼠标就会通过鼠标线给电脑发消息,告知电脑,鼠标向某个方向移动了多少距离;对于操作系统来讲,输入设备工作时会发送一个中断,此为中断事件,在操作系统里面调用中断处理函...原创 2019-11-20 08:46:59 · 716 阅读 · 0 评论