linux

virtualbox 网络

静态ip 在通过virtaulbox搭建虚拟机时,网络配置是绕不开的功能,我们可选择NAT,即配置一个全局的NAT网络,在虚拟节node上选择NAT并配置全局的NAT网络配置,有时当启动node后,节点上无ip,这时可手动修改网络配置 # vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 BOOTPROTO 的值修改为 static (设置静态 IP 模式) ONBOOT 的值修改为 yes (开机自启动) 添加 IP,GATEWAY,NETMASK,DNS 等信息 IP gateway等信息需要与全局的Nat网络对应 然后执行service

  • 凯文
1 min read
linux

linux之内存

问题 RAM为什么不能持久化? 内存管理的最小单位是什么? pagecache是什么? pagecache与buffercache的区别? 线程的内存大小? tmpfs是做什么的? 内存对齐的作用? 内存 概述 内存是计算机的主存储器。内存为进程开辟出进程空间,让进程在其中保存数据。 内存的大小 内存有一个最小的存储单位,大多数都是一个字节。内存用内存地址(memory address)来为每个字节的数据顺序编号。因此,内存地址说明了数据在内存中的位置。内存地址从0开始,每次增加1。这种线性增加的存储器地址称为线性地址(linear address)。为了方便,我们用十六进制数来表示内存地址,比如0x00000003、0x1A010CB0。这里的“0x”

  • 刘凯
31 min read
linux

linux上下文切换

上下文切换 CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。 上下文切换的类型 中断上下文切换 线程上下文切换 用户态内核态上下文切换 进程上下文切换 用户态内核态上下文切换 进程既可以在用户空间运行,又可以在内核空间中运行。进程在用户空间运行时,被称为进程的用户态,而陷入内核空间的时候,被称为进程的内核态。 从用户态到内核态的转变,需要通过系统调用来完成。比如,当我们查看文件内容时,就需要多次系统调用来完成:首先调用 open() 打开文件,

  • 凯文
5 min read
linux

linux之lsof

lsof命令是什么? 可以列出被进程所打开的文件的信息。被打开的文件可以是 普通的文件 目录 网络文件系统的文件 字符设备文件 (函数)共享库 管道,命名管道 符号链接 底层的socket字流,网络socket,unix域名socket 在linux里面,大部分的东西都是被当做文件的…..还有其他很多 lsof使用 列出所有打开的文件: lsof 备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位 查看谁正在使用某个文件 lsof /filepath/file 递归查看某个目录的文件信息 lsof +D /filepath/

  • 凯文
2 min read
linux

linux之内存&cpu分享

问题 RAM与ROM分别是什么? RAM为什么不能持久化? 内存管理的最小单位是什么? 什么是虚拟内存? cache line的作用? volatile的具体实现? RAM RAM作用 内存的存储单元采用了随机读取存储器(RAM, Random Access Memory)。所谓的“随机读取”,是指存储器的读取时间和数据所在位置无关。与之相对,很多存储器的读取时间和数据所在位置有关。就拿磁带来说,我们想听其中的一首歌,必须转动带子。如果那首歌是第一首,那么立即就可以播放。如果那首歌恰巧是最后一首,我们快进到可以播放的位置就需要花很长时间。 RAM的存储 RAM依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。 这样的话,

  • 刘凯
16 min read
linux

linux之cpu cache

CPU缓存概述 为什么需要CPU缓存 cpu缓存访问速度 cpu缓存介绍 CPU Cache Cache 结构 cache寻址方式 Cache Entry & Cache line L3 Cache CPU高速缓存读操作 直接映射寻址过程 组关联寻址过程 Cache Miss CPU高速缓存写操作 缓存写入策略 写直达 写回 缓存一致性协议 MESI MESI协议缓存状态 MESI状态转换 多核缓存协同操作 读写屏障 MESI优化和他们引入的问题 CPU切换状态阻塞解决-存储缓存(

  • 刘凯
32 min read
linux

主板频率、内存频率与cpu频率

频率与超频 【频率】电子元件工作的时候会运行在一定的频率下,频率越高,这个元件的处理速度越快,这就和汽车发动机的马力一样,但是在电脑中,性能不单单只是由频率这一项参数决定,所以频率仅限相同的产品,同一代进行横向对比。 【超频】电子元件既然会照着一定的频率运行,这个频率肯定不是凭空而来,他是厂家在出厂的时候人为设定的,厂家会将频率设定在一个能长期稳定运行的状态下,既然频率是人为设定的,那我们也可以去人为更改,将默认的频率手动修改到更高,让元件超负荷运转,这就是俗称的超频,由于频率高了,电压与发热也会变高,因此超频虽然能免费提升性能,但也要承担相应风险。 内存条的标注频率 内存条的标注频率指的就是你在买内存的时候,商品标题所写的内存频率,这个就是代表了内存条的物理属性。 内存条的标注频率代表了这个内存最高可以稳定工作在什么样的频率下,这里有两个关键词就是最高和稳定,内存频率是人为设定的,只要你想,2400的内存同样可以设定为3200,

  • 凯文
6 min read
linux

linux之CPU

问题 CPU的规格一样吗? 多核 CPU 和多个 CPU 有何区别? CPU线程切换时,CPU缓存中的数据如何变化? CPU概述 cpu作用 CPU只执行三种基本的操作,分别是读出数据、处理数据和往内存写数据。 cpu规格 主流CPU还是Intel和AMD两家的天下。无论是高端还是低端,两大品牌都有着全线的产品。 Intel和AMD的规格是不同的,根据根据主板的cpu接口选择适当的cpu,值得一提的是,同样的Intel,不同系列的cpu,规格也不同,如i3~9与至强系列 系列 尺寸 接口 i3~i9 37.5×

  • 刘凯
20 min read
linux

linux之手动实现容器

目录隔离 创建目录 在工作目录下创建/usr,并将本机该目录下的所有文件copy到工作目录中 启动程序 启动单独mount namespace的程序 unshare -m bash 如果通过unshare命令后,挂载目录后,在其它的mount namespace中仍然可以通过 mount 命令查到,则下载最新的unshare可执行文件 挂载目录 当通过docker run -v挂载目录时,将某个容器外的目录挂载至容器内 mount --bind /data1 data 发现在该mount namespace中,mount命令执行结果如下 [root@k8s-master mount]

  • 刘凯
10 min read
linux

linux系统之磁盘存储

问题 ls的size表示什么,与du查看大小的区别是什么? 为什么目录占空间大小为4096? 分区是按盘面还是柱面? 软连接和硬连接有什么区别? 文件名存储在inode还是文件对应的block中? 磁盘结构 盘片、盘面、磁头 硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。 磁道、扇区 磁道 上图显示的是一个盘面,盘面中一圈圈灰色同心圆为一条条磁道 扇区 从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图践绿色部分) 扇区是磁盘的最小组成单元,通常是512字节。

  • 刘凯
7 min read
linux

linux存储相关命令

磁盘操作 fdisk-查看及管理分区 分区操作 df-分区情况统计 mount/umount-挂载/取消挂载 tune2fs-调整和查看ext2/ext3文件系统参数 blkid-查看文件系统基本信息 e2label-设定分区的label blockdev-获取/设置块设备的属性值 dumpe2fs-查看分区详细信息 格式化 mkfs-格式化分区 mke2fs-格式化ext系统分区 文件操作 du-查看占用空间大小 ls-列出文件 stat-显示文件详细信息 fuser-查找使用文件的进程 检查/修复分区 fsck-检查并修复linux文件系统 badblocks-检查硬盘坏道 filefrag-查看文件碎片报告 e2label 作用 e2label命令,用于获取或设置ext2、ext3文件系统对应的分区的卷标。 卷标:

  • 刘凯
15 min read
linux

tcp 的三个接收队列

prequeue 在linux内核中,每一个网络数据包,都被切分为一个个的skb,这些skb先被内核接收,然后投递到对应的进程处理,进程把skb拷贝到本tcp连接的sk_receive_queue中,然后应答ack。 以往的内核处理这些skb的时候,是直接通过内核调度的,有数据来了,就进行进程调度,这样虽然实时性高,但是会导致进程阻塞,或者调度消耗大的问题。因此内核搞出来一个新的东西叫做,prequeue,skb先统一由内核接收, 然后通过内核原有的进程调度机制进行调度,当调度到某一个进程的时候,该进程发现prequeue中有skb属于自己,于是把prequeue中的skb拷贝到本进程的sk_receive_queue中,并做ack应答。 这样一来,收发网络数据包,就不会引起进程调度了,虽然ack的时间可能会不那么及时,但是cpu的利用率实际上是提高了。 sk_

  • network
1 min read