Mem Cgroup目录无法清理问题分析
? ? ? ? Cgroup(Control Group)是内核提供的资源隔离的技术,用于对Linux 系统中用户态进程使用的资源进行隔离,核心思想是:把进程分组,然后为进程组分配资源(包括内存、CPU、IO等)。其中Mem Cgroup用来隔离进程组使用的内存资源。 ? ? ? ? 在Hadoop集群
? ? ? ? Cgroup(Control Group)是内核提供的资源隔离的技术,用于对Linux 系统中用户态进程使用的资源进行隔离,核心思想是:把进程分组,然后为进程组分配资源(包括内存、CPU、IO等)。其中Mem Cgroup用来隔离进程组使用的内存资源。
? ? ? ? 在Hadoop集群中,我们使用了Mem Cgroup对MapReduce任务使用的内存资源进行隔离控制,以保证单个任务不能占用太大的内存,进而保证整个系统的稳定性。同时我们配置了release_agent,用于在mem cgroup中的所有进程退出后清理相关的资源。
? ? ? ? 但Mem Cgroup在Hadoop集群上线后,经常会出现某个Mem Cgroup中的进程已经全部退出,但对应的Cgroup目录清理不掉的现象。查看Cgroup的状态,有如下现象:
? ? ? ? [root@]# cat /cgroup/memory/test/tasks
? ? ? ? [root@]# cat /cgroup/memory/test/memory.usage_in_bytes
? ? ? ? 90112
? ? ? ??该cgroup的所有进程确实都已经退出了,但还是存在部分内存处于被使用状态,这是神马情况,下意识地想到,难道是Page Cache,果断验证下:
? ? ? ? echo 3 > /proc/sys/vm/drop_caches
? ? ? ? 刷掉Page Cache之后,残留的cgroup目录竟然成功被清理了,?那基本断定是Page Cache的影响了,后面就得分析下代码,研究下其中的原理了。
? ? ? ? 经过几天的分析,终于把Mem Cgroup的基本原理搞明白了。
? ? ? ? 在Linux内核中,每个Mem Cgroup都对应一个mem_cgroup结构,该结构的的核心是res_counter,记录了资源使用情况和资源限制,每个mem cgroup对象都包含一个与之关联的res_counter。
? ? ? ? ?Linux内核管理内核的基本单位是页面,采用page结构管理,一个物理页框对应着一个page结构,与此同时,新增了一个page_cgroup结构,用来关联page和mem_cgroup,这样给定任何一个页面,都可以找到对应的mem_cgroup。另外,每个进程都有一个mm_struct结构来管理进程的内存信息。每个mm_struct知道自己属于的进程,进而可以知道进程所属的mem_cgroup。
??
? ? ? ? 用户进程物理内存的分配基本都是通过page_fault来实现,现在来看下这个过程中是如何实现mem cgroup相关功能的,page_fault的大体流程如下:
? ? ? ?1、? 根据current进程找到对应的mm_struct结构
? ? ? ?2、? 分配需要的page页面
? ? ? ?3、? 调用mem_cgroup_newpage_charge:该函数根据mm struct查找到对应的mem_cgroup,然后? ? ? ??? ? ? ??? ? ? ? ? ? ? ??判断下当前mem_cgroup是否已经超过限制,如果没有,则把新分配page对应page_cgroup指向该mem_cgroup,并更新资源使用计数。如果已经超过了限制,则进行oom相关的处理。
? ? ? ? 现在来考虑下Page cache,这些内存是系统级的,可以被所有进程使用,那这些内存的使用算在哪个进程的头上呢?mem cgroup采用的是first touch的原则,就是说哪个进程把page cache页面“带进”内存,这个页面就算在谁的头上。
? ? ? ? 大致了解了Mem cgroup的原理,回到一开始的问题,虽然mem cgroup中的进程都已经退出了,但是这些进程使用的page cache仍然计算在这个mem cgroup中,导致mem cgroup一直被引用,因此mem cgroup清理不掉,刷掉page cache后,mem cgroup就没有被引用了,也就可以清理了。
? ? ? ? 针对该问题,我们在内核新增加了一个page cache的使用计算选择:把page cache全部算入默认的根mem cgroup。这样做的另外一个好处是,mem cgroup只记录进程本身利用的物理内存,更直观可控。同时page cache是可回收的,如果某个mem cgroup中的进程产生大量的page cache时,其他mem cgroup进程的内存基本不受影响,可能的坏处是影响其他mem cgroup内存分配的效率。
? ? ? ? 参考:http://lwn.net/Articles/432224/
你也许会喜欢:
- hadoop集群System Cpu消耗过高问题分析 by 杂货店店长
- 性能测试中sql索引引起的性能问题
- 从Blue Pill、硬件虚拟化谈安全防护完备性上的一个小原则
- 利用 Flash 漏洞的木马程序分析报告 by 师兄
- 端午节蓝屏之谜:金山系列软件同微软KB2839229冲突技术分析

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Ramai pengguna win10 boleh melihat fail hiberfil.sys dalam pemacu C, dan fail ini selalunya menduduki sejumlah besar pemacu C sistem Oleh itu, ramai pengguna yang tidak mempunyai pemacu C yang mencukupi ingin memadamkan fail ini di bawah untuk butiran. 1. Lihat fail hibernasi dan keluarkan tanda semak di hadapan tanda berikut dalam tetingkap pop timbul. 2. Semak pemacu c sekali lagi dan cari beberapa fail besar, antaranya hiberfil.sys ialah fail hibernasi. Buka tetingkap arahan cmd di sini Sesetengah komputer mungkin tidak mempunyai hak pentadbir Anda boleh mencari arahan cmd secara langsung dalam direktori sistem dan klik kanan untuk melaksanakannya sebagai pentadbir. 3. Memasukkan powercfg-hoff dalam tetingkap arahan akan mematikan fungsi hibernasi secara automatik, dan fail hibernasi juga akan secara automatik

Versi mudah alih Aplikasi Pembacaan WeChat ialah perisian membaca yang sangat baik Perisian ini menyediakan banyak buku dan karya Anda boleh membacanya pada bila-bila masa, di mana-mana sahaja dengan carian satu klik dan membacanya secara rasmi dan jenis yang berbeza buku tersusun rapi dan nikmati suasana bacaan yang selesa dan santai. Tukar mod bacaan senario yang berbeza, kemas kini bab buku terkini secara berterusan setiap hari, sokong log masuk dalam talian daripada berbilang peranti dan muat turun kelompok ke rak buku Anda boleh membacanya dengan atau tanpa Internet, supaya semua orang boleh menemui lebih banyak pengetahuan daripadanya . Sekarang editor memperincikannya dalam talian Promosikan kaedah melihat katalog untuk rakan membaca WeChat. 1. Buka buku yang anda ingin lihat katalog dan klik di bahagian tengah buku. 2. Klik ikon tiga baris di sudut kiri bawah. 3. Dalam tetingkap pop timbul, lihat katalog buku

Tajuk: Analisis sebab dan penyelesaian mengapa direktori sekunder DreamWeaver CMS tidak boleh dibuka Dreamweaver CMS (DedeCMS) ialah sistem pengurusan kandungan sumber terbuka yang berkuasa yang digunakan secara meluas dalam pembinaan pelbagai laman web. Walau bagaimanapun, kadangkala semasa proses membina tapak web, anda mungkin menghadapi situasi di mana direktori sekunder tidak boleh dibuka, yang membawa masalah kepada operasi biasa tapak web. Dalam artikel ini, kami akan menganalisis kemungkinan sebab mengapa direktori sekunder tidak boleh dibuka dan memberikan contoh kod khusus untuk menyelesaikan masalah ini. 1. Analisis sebab yang mungkin: Masalah konfigurasi peraturan pseudo-statik: Semasa penggunaan

tree ialah alat baris arahan yang menyenaraikan secara rekursif kandungan direktori dalam format pepohon, supaya semua direktori, subdirektori dan fail disenaraikan dalam cara hierarki, dengan itu memaparkan struktur organisasi fail dan folder secara visual. Berikut ialah kaedah pemasangan dan penggunaan pepohon di bawah sistem Windows dan Linux Pemasangan dan penggunaan pepohon di bawah Linux: aptupdate&&aptinstalltree Berikut ialah cara biasa menggunakan arahan pepohon. #Paparkan pepohon direktori di bawah pepohon laluan yang ditentukan/d/temp #Hadkan pepohon kedalaman paparan maksimum-L3 #Paparkan direktori sahaja tetapi bukan pepohon fail-d #Paparan termasuk fail tersembunyi dan direktori tr

Wuhua Mixin telah mengesahkan bahawa ia akan menjalankan ujian pecah pada 28 Februari. Kali ini kami akan menyelesaikan masalah biasa ujian pecah, termasuk sama ada anda telah menyertai ujian sebelumnya, adakah anda layak kali ini, permulaan dan akhir ujian ujian, dan masa pramuat turun? Mari kita lihat platform peranti yang disokong dan kandungan lain. Soalan Lazim tentang ujian terobosan baharu Wuhuami: 28 Februari, kami menantikan ketibaan anda! 1. Apakah sifat "Ujian Pecah"? Ujian ini ialah ujian pengebilan dan pemadaman fail terhad untuk Android Selepas ujian, data permainan ujian ini akan dipadamkan. 2. Adakah anda pernah menyertai "Ujian Pembukaan" atau "Ujian Kemasukan" Adakah anda mempunyai kelayakan untuk menyertai "Ujian Berbuka" kali ini? sila imbas kod QR di bawah untuk pergi ke " Kepada pemain yang telah mengambil bahagian dalam beta tertutup

Tajuk: Adakah bahasa pengaturcaraan utama Tencent Go: Analisis mendalam Sebagai syarikat teknologi terkemuka di China, Tencent sentiasa menarik banyak perhatian dalam pilihan bahasa pengaturcaraannya. Dalam beberapa tahun kebelakangan ini, sesetengah orang percaya bahawa Tencent menggunakan Go sebagai bahasa pengaturcaraan utamanya. Artikel ini akan menjalankan analisis mendalam sama ada bahasa pengaturcaraan utama Tencent ialah Go dan memberikan contoh kod khusus untuk menyokong pandangan ini. 1. Aplikasi bahasa Go dalam Tencent Go ialah bahasa pengaturcaraan sumber terbuka yang dibangunkan oleh Google Kecekapan, kesesuaian dan kesederhanaannya disukai oleh banyak pembangun.

Jika anda sering menghadapi masalah memori yang tidak mencukupi semasa menggunakan telefon vivo anda, maka inilah masanya untuk belajar cara membersihkan memori telefon anda dan mengosongkan ruang. Panduan ini akan memperkenalkan anda kepada beberapa kaedah mudah dan berkesan untuk membantu anda mengoptimumkan penggunaan memori telefon vivo anda dan menjadikannya berjalan dengan lebih lancar. 1. Kosongkan fail cache. Fail cache menduduki sebahagian besar memori telefon mudah alih. Mula-mula, buka menu tetapan telefon anda, cari pilihan "Data Cache" atau "Kosongkan Cache" dalam pilihan "Storan", dan klik untuk masuk. Kemudian, pilih Kosongkan Cache dan tunggu pembersihan selesai. 2. Nyahpasang aplikasi yang tidak diperlukan Adakah anda sering memuat turun pelbagai aplikasi tetapi hanya menggunakan beberapa daripadanya? Apl terbengkalai ini mengambil banyak

Pelaksanaan PHP teknik pembersihan akhiran laluan alamat URL Dalam proses pembangunan Web, pembersihan akhiran laluan alamat URL merupakan langkah yang sangat penting. Membersihkan akhiran laluan alamat URL boleh meningkatkan pengoptimuman SEO tapak web, meningkatkan pengalaman pengguna dan juga bermanfaat kepada keselamatan tapak web. Dalam pembangunan PHP, bagaimana untuk membersihkan akhiran laluan alamat URL? Berikut ialah beberapa petua praktikal dan contoh kod khusus. 1. Konsep asas Dalam URL, akhiran laluan alamat biasanya merujuk kepada jenis fail atau pengecam dalam URL, contohnya
