Files
kernel/include/linux
William Cohen 97dc32cdb1 reduce size of task_struct on 64-bit machines
This past week I was playing around with that pahole tool
(http://oops.ghostprotocols.net:81/acme/dwarves/) and looking at the size
of various struct in the kernel.  I was surprised by the size of the
task_struct on x86_64, approaching 4K.  I looked through the fields in
task_struct and found that a number of them were declared as "unsigned
long" rather than "unsigned int" despite them appearing okay as 32-bit
sized fields.  On x86_64 "unsigned long" ends up being 8 bytes in size and
forces 8 byte alignment.  Is there a reason there a reason they are
"unsigned long"?

The patch below drops the size of the struct from 3808 bytes (60 64-byte
cachelines) to 3760 bytes (59 64-byte cachelines).  A couple other fields
in the task struct take a signficant amount of space:

struct thread_struct       thread;               688
struct held_lock           held_locks[30];       1680

CONFIG_LOCKDEP is turned on in the .config

[akpm@linux-foundation.org: fix printk warnings]
Cc: <linux-arch@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-08 11:14:58 -07:00
..
2007-05-01 16:11:57 +02:00
2007-05-07 12:12:58 -07:00
2007-04-30 22:17:15 -07:00
2007-02-20 17:10:15 -08:00
2007-05-07 12:12:55 -07:00
2007-02-20 17:10:14 -08:00
2007-05-07 12:13:00 -07:00
2007-05-07 12:13:00 -07:00
2007-04-27 10:57:31 -07:00
2007-05-01 09:11:12 +01:00
2007-02-09 17:39:36 -05:00
2007-02-11 11:18:07 -08:00
2007-05-07 12:12:58 -07:00
2007-05-03 13:17:25 -07:00
2007-03-27 09:05:15 -07:00
2007-05-06 20:38:28 -04:00
2007-04-28 11:01:07 -04:00
2007-04-19 14:56:12 +02:00
2007-03-16 00:59:29 -04:00
2007-04-07 10:03:43 -07:00
2007-05-01 23:26:34 +02:00
2007-05-05 22:03:49 +02:00
2007-04-25 22:30:01 -07:00
2007-04-25 22:29:10 -07:00
2007-04-25 22:24:41 -07:00
2007-04-25 22:29:10 -07:00
2007-05-07 12:12:59 -07:00
2007-03-01 14:53:38 -08:00
2007-04-25 22:25:52 -07:00
2007-04-30 16:40:39 -07:00
2007-05-03 10:52:22 +03:00
2007-05-07 12:13:00 -07:00
2007-02-16 14:37:06 +00:00
2007-04-25 22:29:49 -07:00
2007-05-03 10:52:32 +03:00
2007-02-17 19:17:37 +01:00
2007-05-03 10:52:22 +03:00
2007-05-07 12:12:53 -07:00
2007-05-04 17:59:07 -07:00
2007-05-07 12:12:59 -07:00
2007-05-05 14:15:32 -07:00
2007-03-12 16:31:50 -07:00
2007-03-27 08:55:47 +02:00
2007-04-17 16:36:26 -07:00
2007-04-30 16:40:41 -07:00
2007-02-11 10:51:28 -08:00
2007-05-08 11:14:57 -07:00
2007-05-07 12:12:54 -07:00
2007-02-11 10:51:28 -08:00
2007-05-07 12:12:58 -07:00
2007-05-07 12:12:50 -07:00
2007-05-03 03:16:20 -07:00
2007-05-07 12:12:54 -07:00
2007-02-20 17:10:14 -08:00
2007-02-20 17:10:14 -08:00
2007-05-08 11:14:58 -07:00
2007-05-07 12:12:59 -07:00
2007-02-12 09:48:41 -08:00
2007-02-11 10:51:18 -08:00
2007-02-20 17:10:13 -08:00
2007-02-16 08:13:57 -08:00
2007-02-16 08:13:56 -08:00
2007-03-05 07:57:51 -08:00
2007-05-07 12:12:58 -07:00
2007-02-11 10:51:25 -08:00
2007-02-11 11:18:05 -08:00
2007-05-04 12:55:39 -07:00