技术项目 - Linux Swap
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相关推荐
- 技术项目 - Linux网卡中断使单个CPU过载
Linux内核在性能方面已经经历了很长一段时间的考验,尤其是2.6/3.x内核.然而,在高IO,尤其是网络方面的情况下,对中断的处理可能成为问题.我们已经在拥有一个或多个饱和1Gbps网卡的高性能系统 ...
- 开源项目-基于Intel VT技术的Linux内核调试器
本开源项目将硬件虚拟化技术应用在内核调试器上,使内核调试器成为VMM,将操作系统置于虚拟机中运行,即操作系统成为GuestOS,以这样的一种形式进行调试,最主要的好处就是调试器对操作系统完全透明.如下 ...
- 大数据技术之 Linux 基础
一.Linux 入门概述 概述 Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux 是一套免费使用和自由传播的类 Un ...
- Raid技术在Linux下的使用
Raid技术在Linux下的使用 一.RAID介绍 1.RAID理解 2.RAID优点 3.RAID分类 二.RAID0 1.RAID0介绍 2.RAID0图示 3.RAID0特点 三.RAID1 1 ...
- 网络虚拟化技术(一): linux网络虚拟化,网络虚拟化技术(一): Linux网络虚拟化...
网络虚拟化技术(一): Linux网络虚拟化 2018-12-11 01 March 2013 笔者现在在做云计算的网络设计,涉及到上百台服务器与交换机,在实测前必须进行原型测试,但是我只有一个工作用 ...
- 大数据技术之Linux
第1章 Linux入门 1.1 概述 如图1-1所示 图1-1 Linux概述 1.2 Linux和Windows区别 图1-2 Linux和Windows的区别 1.3 CentOS下载地址 如图1 ...
- Docker 技术鼻祖 Linux Namespace 入门系列:Namespace API
点击 "阅读原文" 可以获得更好的阅读体验. 前言 Linux Namespace 是 Linux 提供的一种内核级别环境隔离的方法.用官方的话来说,Linux Namespace ...
- Docker基础技术:Linux Namespace【上】
点点收获: //之前发现Coolshell上好久不更新了, 博主果然去搞大业去了,只恨这几篇文章看到太晚了啊~太厉害了. 1. clone(), unshare(), setns()初识; 主要是š ...
- 基于IntelVt技术的Linux内核调试器 - 2
4 基于IntelVt技术的Linux内核调试器- 调试器设计与实现(2):调试核心 4.1反汇编引擎 如果说调试框架是一个调试器的灵魂,那么接口与反汇编引擎就是一个调试器的身体.我们在调试过程中是要 ...
最新文章
- 《奇思妙想》人物篇--图灵奖得主概览
- docker 删除所有未启动的容器_Docker 镜像容器常用操作(让我们用 docker 溜得飞起)...
- 融合通信常见问题3月刊 | 云信小课堂
- Python编译成C语言,性能有多暴力?
- linux真实地址是什么意思,linux – 如何为发件人地址配置真实域名
- 在Linux下快速搭建LAMP开发平台.doc
- 爬虫怎么处理python_python 爬虫怎么处理json内容
- linux svn 拉取代码_svn快速入门指南
- mysql sysdate 格式化_MySQL函数汇总
- 共用软件现漏洞未修复,一年来美国数十个政府网站在推送色情广告
- 修改服务器的maxpostsize的值,maxPostSize属性改变tomcat的post请求的请求体大小设置...
- 程序设计基础(c语言)(第3版)课后习题答案
- 深度学习:卷积神经网络(详解版)
- 大功率H桥电机驱动板电路设计方案 此大功率直流电机驱动板采用ir2103驱动芯片
- The current branch master has no upstream branch.的解决
- 未来: 从Uber到Suber
- 请问有没有一款外放音质较好的手机?真双扬声器、环绕立体声,横屏时扬声器左右对称?
- 触动精灵怎么向服务器发送消息,触动精灵 函数说明及使用方法
- 2021乌兰浩特四中高考成绩查询,2021内蒙古地区高考查分详细
- vue使用ajax提交数据,vue中使用ajax请求 data的数据问题