提交 a4aa61b9 编写于 作者: M Ma Wupeng 提交者: Yang Yingliang

mm: Show ReliableTaskUsed in /proc/meminfo

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I4SK3S
CVE: NA

--------------------------------

Add ReliableTaskUsed in /proc/meminfo if memory reliable is enabled.
- ReliableTaskUsed: reliable memory used by special user tasks and
  global init process

Change variable reliable_user_used_nr_page to a more accurate
reliable_task_used_nr_page.
Signed-off-by: NMa Wupeng <mawupeng1@huawei.com>
Reviewed-by: Kefeng Wang<wangkefeng.wang@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 39cb4823
...@@ -884,6 +884,7 @@ ShmemHugePages: 0 kB ...@@ -884,6 +884,7 @@ ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB ShmemPmdMapped: 0 kB
ReliableTotal: 7340032 kB ReliableTotal: 7340032 kB
ReliableUsed: 418824 kB ReliableUsed: 418824 kB
ReliableTaskUsed: 418824 kB
ReliableBuddyMem: 418824 kB ReliableBuddyMem: 418824 kB
ReliableShmem: 96 kB ReliableShmem: 96 kB
...@@ -978,6 +979,8 @@ VmallocChunk: largest contiguous block of vmalloc area which is free ...@@ -978,6 +979,8 @@ VmallocChunk: largest contiguous block of vmalloc area which is free
allocations. This stat excludes the cost of metadata. allocations. This stat excludes the cost of metadata.
ReliableTotal: Total reliable memory size ReliableTotal: Total reliable memory size
ReliableUsed: The used amount of reliable memory ReliableUsed: The used amount of reliable memory
ReliableTaskUsed: Reliable memory used by special user tasks and global
init process
ReliableBuddyMem: Total mirrored memory size in buddy system ReliableBuddyMem: Total mirrored memory size in buddy system
ReliableShmem: Reliable memory used by shmem ReliableShmem: Reliable memory used by shmem
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
extern struct static_key_false mem_reliable; extern struct static_key_false mem_reliable;
extern bool reliable_enabled; extern bool reliable_enabled;
extern atomic_long_t reliable_user_used_nr_page; extern atomic_long_t reliable_task_used_nr_page;
extern unsigned long task_reliable_limit __read_mostly; extern unsigned long task_reliable_limit __read_mostly;
extern bool reliable_allow_fallback; extern bool reliable_allow_fallback;
extern bool shmem_reliable; extern bool shmem_reliable;
...@@ -74,13 +74,13 @@ static inline void reliable_page_counter(struct page *page, ...@@ -74,13 +74,13 @@ static inline void reliable_page_counter(struct page *page,
{ {
if (page_reliable(page)) { if (page_reliable(page)) {
atomic_long_add(val, &mm->reliable_nr_page); atomic_long_add(val, &mm->reliable_nr_page);
atomic_long_add(val, &reliable_user_used_nr_page); atomic_long_add(val, &reliable_task_used_nr_page);
} }
} }
static inline bool reliable_mem_limit_check(unsigned long nr_page) static inline bool reliable_mem_limit_check(unsigned long nr_page)
{ {
return atomic_long_read(&reliable_user_used_nr_page) + nr_page <= return atomic_long_read(&reliable_task_used_nr_page) + nr_page <=
task_reliable_limit / PAGE_SIZE; task_reliable_limit / PAGE_SIZE;
} }
......
...@@ -24,7 +24,7 @@ DEFINE_STATIC_KEY_FALSE(mem_reliable); ...@@ -24,7 +24,7 @@ DEFINE_STATIC_KEY_FALSE(mem_reliable);
bool reliable_enabled; bool reliable_enabled;
static atomic_long_t total_reliable_mem; static atomic_long_t total_reliable_mem;
atomic_long_t reliable_user_used_nr_page; atomic_long_t reliable_task_used_nr_page;
/* reliable user limit for user tasks with reliable flag */ /* reliable user limit for user tasks with reliable flag */
unsigned long task_reliable_limit = ULONG_MAX; unsigned long task_reliable_limit = ULONG_MAX;
bool reliable_allow_fallback __read_mostly = true; bool reliable_allow_fallback __read_mostly = true;
...@@ -192,6 +192,8 @@ void reliable_report_meminfo(struct seq_file *m) ...@@ -192,6 +192,8 @@ void reliable_report_meminfo(struct seq_file *m)
total_reliable_mem_sz() >> PAGE_SHIFT); total_reliable_mem_sz() >> PAGE_SHIFT);
show_val_kb(m, "ReliableUsed: ", show_val_kb(m, "ReliableUsed: ",
used_reliable_mem_sz() >> PAGE_SHIFT); used_reliable_mem_sz() >> PAGE_SHIFT);
show_val_kb(m, "ReliableTaskUsed: ",
atomic_long_read(&reliable_task_used_nr_page));
show_val_kb(m, "ReliableBuddyMem: ", nr_buddy_pages); show_val_kb(m, "ReliableBuddyMem: ", nr_buddy_pages);
if (shmem_reliable_is_enabled()) { if (shmem_reliable_is_enabled()) {
...@@ -514,7 +516,7 @@ void reliable_show_mem_info(void) ...@@ -514,7 +516,7 @@ void reliable_show_mem_info(void)
pr_info("task_reliable_limit: %lu kB", pr_info("task_reliable_limit: %lu kB",
task_reliable_limit >> 10); task_reliable_limit >> 10);
pr_info("reliable_user_used: %ld kB", pr_info("reliable_user_used: %ld kB",
atomic_long_read(&reliable_user_used_nr_page) << atomic_long_read(&reliable_task_used_nr_page) <<
(PAGE_SHIFT - 10)); (PAGE_SHIFT - 10));
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册