Linux 是一个非常棒操作系统。几乎所有的更新中,它都在不断的完善中。 现在已经呈现出:从小到手机,大到超级计算机,无处不在运行着Linux。而其平均每8个星期就会有新的版本发行出来,并且伴随着很大的变化。对于生产环 境中的服务器,这通常会造成一些技术上的苦恼以及问题。我们也会在文章讨论到这些问题。

其中对于swap的问题。 所有人都不希望使用到swap,但是对于在生产中的Linux服务器如何才能正确的使用,分配,管理,监控 swap?

首 先是swappiness。这是一个Linux内核参数,并且可以通过sysctl来调控Linux系统采用什么机制来调配物理内存与cache交换。  在很多的Linux发行版本中其swappiness参数通常是设置为60,而这个设置是非常不合理的。 我们通常设置swappiness为0,在生产服务器中尽量避免使用swap分区。 在很多的层面来说使用swap是非常不正常的,例如在实际环境中,任何在使用swap的进程都将被冻结,而这对于多线程的服务器(例如运行 着:MySQL,Java,这时如果这些进程正在使用swap,那么当1秒,10秒,100秒,进程会冻结被杀死) 而这都是非常致命的危险。如果确实是物理内存不足,而想使用swap作为’虚假‘内存来使用,但是如果将swappiness 设置为60,即使在服务器还有GB的内存没有在使用,任然非常容易出现问题。

对于一些很老的应用程序和为了作为cache使用,也许 swap的使用是一个有用的选择。 但是我们依然是建议将swappiness参数设置为20-30之间,尽管设置为0才是最推荐的选择。也许有人会认为使用一些swap可以排除一些不在使 用的代码,但是这写代码并不会在真正的生产环境中产生,并且这些代码通常会很小。

第二个是swap的监测。我们有时候会有一些关于内存的 问题,并且有swap正在使用,但是系统很难告知我们具体是什么程序正在使用swap。 我们为什么关心这个问题? 一个好的理由是:我们只是想知道。但是更为重要的是,及时当内存可使用量变低的时候,将会有程序开始使用swap,在这种情况下,我们的监控会发出警报。 我们也会关注内存的变化,看是否还在继续降低(尽管理论上讲:swap 的cache 的大小会告知我们危险的程度,对于我们的工程师是个需要分析原因的问题)。如果我们知道哪些服务正在使用swap,我们会考虑重启服务程序来移除正在使用 的swap数据(例如通常对于数据库服务器来说我们会这么做)。但是很多客户在一台性能高的服务器上有很多的程序在运行时,我们也可以使用相应的工具来检 查出具体是什么程序在使用swap。

第三个是swap的释放。由上所述,我们得知在一些情况下swap将会被使用,这可能持续使用几天, 几星期,或者长达几个月,尽管这部分swap中的数据现在不需要使用。很多种情况是swap的cache可以被立即释放,但是没有一种办法可以做到这样。 所以最可行的方式是立即终止使用swap,正如我们可以终止使用文件的缓存。第二种是强迫尽量使应用程序减少使用swap,这样对于我们服务器更加合适。

第 四个是随机的swap。linux是非常复杂并精密的,但对于swap的使用依然没有很好地解决办法,似乎没人知道为什么。最近发现一些归咎于NUMA的 问题,但是仍然不是很明确具体的原因,特别是在一些老的版本内核中(2.6.3x之前的版本,当然也包含使用2.6.18内核的RH/Centos 5.x)。 即使在今天,我们通常分配一些swap,因为当内核在没有swap的情况下并不能非常良好的工作(例如:当没有swap分区的时候,及时一些有这超大内存 的EC2服务器,也会出现负载问题。 例如:系统会出现一些CPU使用100%等一些不正常的现象)。新的内核确实已经变得更加完善,但是仍有很多需要改进的。

转载于:https://blog.51cto.com/chinanetcloud/1037666

技术项目 - Linux Swap相关推荐

  1. 技术项目 - Linux网卡中断使单个CPU过载

    Linux内核在性能方面已经经历了很长一段时间的考验,尤其是2.6/3.x内核.然而,在高IO,尤其是网络方面的情况下,对中断的处理可能成为问题.我们已经在拥有一个或多个饱和1Gbps网卡的高性能系统 ...

  2. 开源项目-基于Intel VT技术的Linux内核调试器

    本开源项目将硬件虚拟化技术应用在内核调试器上,使内核调试器成为VMM,将操作系统置于虚拟机中运行,即操作系统成为GuestOS,以这样的一种形式进行调试,最主要的好处就是调试器对操作系统完全透明.如下 ...

  3. 大数据技术之 Linux 基础

    一.Linux 入门概述 概述 Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux 是一套免费使用和自由传播的类 Un ...

  4. Raid技术在Linux下的使用

    Raid技术在Linux下的使用 一.RAID介绍 1.RAID理解 2.RAID优点 3.RAID分类 二.RAID0 1.RAID0介绍 2.RAID0图示 3.RAID0特点 三.RAID1 1 ...

  5. 网络虚拟化技术(一): linux网络虚拟化,网络虚拟化技术(一): Linux网络虚拟化...

    网络虚拟化技术(一): Linux网络虚拟化 2018-12-11 01 March 2013 笔者现在在做云计算的网络设计,涉及到上百台服务器与交换机,在实测前必须进行原型测试,但是我只有一个工作用 ...

  6. 大数据技术之Linux

    第1章 Linux入门 1.1 概述 如图1-1所示 图1-1 Linux概述 1.2 Linux和Windows区别 图1-2 Linux和Windows的区别 1.3 CentOS下载地址 如图1 ...

  7. Docker 技术鼻祖 Linux Namespace 入门系列:Namespace API

    点击 "阅读原文" 可以获得更好的阅读体验. 前言 Linux Namespace 是 Linux 提供的一种内核级别环境隔离的方法.用官方的话来说,Linux Namespace ...

  8. Docker基础技术:Linux Namespace【上】

    点点收获: //之前发现Coolshell上好久不更新了, 博主果然去搞大业去了,只恨这几篇文章看到太晚了啊~太厉害了. 1.  clone(), unshare(), setns()初识; 主要是š ...

  9. 基于IntelVt技术的Linux内核调试器 - 2

    4 基于IntelVt技术的Linux内核调试器- 调试器设计与实现(2):调试核心 4.1反汇编引擎 如果说调试框架是一个调试器的灵魂,那么接口与反汇编引擎就是一个调试器的身体.我们在调试过程中是要 ...

最新文章

  1. 《奇思妙想》人物篇--图灵奖得主概览
  2. docker 删除所有未启动的容器_Docker 镜像容器常用操作(让我们用 docker 溜得飞起)...
  3. 融合通信常见问题3月刊 | 云信小课堂
  4. Python编译成C语言,性能有多暴力?
  5. linux真实地址是什么意思,linux – 如何为发件人地址配置真实域名
  6. 在Linux下快速搭建LAMP开发平台.doc
  7. 爬虫怎么处理python_python 爬虫怎么处理json内容
  8. linux svn 拉取代码_svn快速入门指南
  9. mysql sysdate 格式化_MySQL函数汇总
  10. 共用软件现漏洞未修复,一年来美国数十个政府网站在推送色情广告
  11. 修改服务器的maxpostsize的值,maxPostSize属性改变tomcat的post请求的请求体大小设置...
  12. 程序设计基础(c语言)(第3版)课后习题答案
  13. 深度学习:卷积神经网络(详解版)
  14. 大功率H桥电机驱动板电路设计方案 此大功率直流电机驱动板采用ir2103驱动芯片
  15. The current branch master has no upstream branch.的解决
  16. 未来: 从Uber到Suber
  17. 请问有没有一款外放音质较好的手机?真双扬声器、环绕立体声,横屏时扬声器左右对称?
  18. 触动精灵怎么向服务器发送消息,触动精灵 函数说明及使用方法
  19. 2021乌兰浩特四中高考成绩查询,2021内蒙古地区高考查分详细
  20. vue使用ajax提交数据,vue中使用ajax请求 data的数据问题

热门文章

  1. AJPFX关于Set接口学习笔记及总结
  2. 《Pro SQL Server Internals》部分翻译(P155-165)
  3. Swift 高级运算符
  4. MATLAB 图像的平滑和边缘检测
  5. 运维工程师必备之负载 均衡集群及LVS详解
  6. Oracle下绝对文件号和相对文件号区别
  7. Swarm 如何存储数据?- 每天5分钟玩转 Docker 容器技术(103)
  8. .NET Compact Framework下SQL CE的使用
  9. 东芝收购协议达成 富士通正式退出硬盘市场
  10. 深入理解openstack网络架构(2)----Basic Use Cases