Files
linux/kernel
Oleg Nesterov 51de4d9085 [PATCH] taskstats: use nla_reserve() for reply assembling
Currently taskstats_user_cmd()/taskstats_exit() do:

	1) allocate stats
	2) fill stats
	3) make a temporary copy on stack (236 bytes)
	4) copy that copy to skb
	5) free stats

With the help of nla_reserve() we can operate on skb->data directly,
thus avoiding all these steps except 2).

So, before this patch:

	// copy *stats to skb->data
	int mk_reply(skb, ..., struct taskstats *stats);

	fill_pid(stats);
	mk_reply(skb, ..., stats);

After:
	// return a pointer to skb->data
	struct taskstats *mk_reply(skb, ...);

	stat = mk_reply(skb, ...);
	fill_pid(stats);

Shrinks taskatsks.o by 162 bytes.

A stupid benchmark (send one million TASKSTATS_CMD_ATTR_PID) shows the

		real user sys
	before:
		4.02 0.06 3.96
		4.02 0.04 3.98
		4.02 0.04 3.97
	after:
		3.86 0.08 3.78
		3.88 0.10 3.77
		3.89 0.09 3.80

but this looks suspiciously good.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Acked-by: Shailabh Nagar <nagar@watson.ibm.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Jay Lan <jlan@sgi.com>
Cc: Thomas Graf <tgraf@suug.ch>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-07 08:39:34 -08:00
..
2006-09-11 13:32:30 -04:00
2006-09-29 09:18:12 -07:00
2006-12-07 08:39:25 -08:00
2006-10-03 08:03:41 -07:00
2006-03-26 08:57:03 -08:00
2006-09-29 09:18:15 -07:00
2006-12-04 02:00:22 -05:00
2006-07-03 15:27:04 -07:00
2006-12-04 02:00:22 -05:00
2006-09-30 01:47:55 +02:00
2006-12-07 08:39:25 -08:00
2006-11-03 12:27:58 -08:00
2006-09-29 09:18:12 -07:00
2006-11-22 14:57:56 +00:00
2006-12-07 08:39:32 -08:00
2005-04-16 15:20:36 -07:00
2006-10-01 00:39:27 -07:00
2006-04-19 16:27:18 -07:00
2006-12-07 08:39:25 -08:00
2006-07-10 13:24:25 -07:00