nmeter: %[md] %[mw] - dirty file-backed pages, writeback pages
function old new delta collect_mem 333 387 +54 .rodata 104369 104380 +11 packed_usage 34184 34175 -9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/1 up/down: 65/-9) Total: 56 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		| @@ -27,6 +27,8 @@ | ||||
| //usage:     "\n		(displays: S:system U:user N:niced D:iowait I:irq i:softirq)" | ||||
| //usage:     "\n %[nINTERFACE]	Network INTERFACE" | ||||
| //usage:     "\n %m		Allocated memory" | ||||
| //usage:     "\n %[md]		Dirty file-backed memory" | ||||
| //usage:     "\n %[mw]		Memory being written to storage" | ||||
| //usage:     "\n %[mf]		Free memory" | ||||
| //usage:     "\n %[mt]		Total memory" | ||||
| //usage:     "\n %s		Allocated swap" | ||||
| @@ -208,7 +210,7 @@ enum conv_type { | ||||
| // Reads decimal values from line. Values start after key, for example: | ||||
| // "cpu  649369 0 341297 4336769..." - key is "cpu" here. | ||||
| // Values are stored in vec[]. | ||||
| // posbits is a bit lit of positions we are interested in. | ||||
| // posbits is a bit list of positions we are interested in. | ||||
| // for example: 00100110 - we want 1st, 2nd and 5th value. | ||||
| // posbits.bit0 encodes conversion type. | ||||
| static int rdval(const char* p, const char* key, ullong *vec, long posbits) | ||||
| @@ -661,13 +663,31 @@ S_STAT_END(mem_stat) | ||||
| //Hugepagesize:     4096 kB | ||||
| static void FAST_FUNC collect_mem(mem_stat *s) | ||||
| { | ||||
| 	ullong m_total = 0; | ||||
| 	ullong m_free = 0; | ||||
| 	ullong m_bufs = 0; | ||||
| 	ullong m_cached = 0; | ||||
| 	ullong m_slab = 0; | ||||
| 	ullong m_total; | ||||
| 	ullong m_free; | ||||
| 	ullong m_bufs; | ||||
| 	ullong m_cached; | ||||
| 	ullong m_slab; | ||||
|  | ||||
| 	if (rdval(get_file(&proc_meminfo), "MemTotal:", &m_total, 1 << 1)) { | ||||
| 	const char *meminfo = get_file(&proc_meminfo); | ||||
|  | ||||
| 	if (s->opt == 'd' /* dirty page cache */ | ||||
| 	 || s->opt == 'w' /* under writeback */ | ||||
| 	) { | ||||
| 		m_total = 0; /* temporary reuse m_total */ | ||||
| 		if (rdval(meminfo, | ||||
| 				(s->opt == 'd' ? "Dirty:" : "Writeback:"), | ||||
| 				&m_total, 1 << 1) | ||||
| 		) { | ||||
| 			put_question_marks(4); | ||||
| 			return; | ||||
| 		} | ||||
| 		scale(m_total << 10); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	m_total = 0; | ||||
| 	if (rdval(meminfo, "MemTotal:", &m_total, 1 << 1)) { | ||||
| 		put_question_marks(4); | ||||
| 		return; | ||||
| 	} | ||||
| @@ -676,10 +696,14 @@ static void FAST_FUNC collect_mem(mem_stat *s) | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	if (rdval(proc_meminfo.file, "MemFree:", &m_free  , 1 << 1) | ||||
| 	 || rdval(proc_meminfo.file, "Buffers:", &m_bufs  , 1 << 1) | ||||
| 	 || rdval(proc_meminfo.file, "Cached:",  &m_cached, 1 << 1) | ||||
| 	 || rdval(proc_meminfo.file, "Slab:",    &m_slab  , 1 << 1) | ||||
| 	m_free = 0; | ||||
| 	m_bufs = 0; | ||||
| 	m_cached = 0; | ||||
| 	m_slab = 0; | ||||
| 	if (rdval(meminfo, "MemFree:", &m_free  , 1 << 1) | ||||
| 	 || rdval(meminfo, "Buffers:", &m_bufs  , 1 << 1) | ||||
| 	 || rdval(meminfo, "Cached:",  &m_cached, 1 << 1) | ||||
| 	 || rdval(meminfo, "Slab:",    &m_slab  , 1 << 1) | ||||
| 	) { | ||||
| 		put_question_marks(4); | ||||
| 		return; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user