From: Manfred Spraul <manfred@colorfullife.com>
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: Andrew Morton <akpm@osdl.org>
Subject: [PATCH, RFC] remove task_cache entirely
Date: Sun, 13 Jul 2003 13:57:41 +0200 [thread overview]
Message-ID: <3F114935.2000409@colorfullife.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 453 bytes --]
kernel/fork.c contains a disabled cache for task stuctures. task
structures are placed into the task cache only if "tsk==current", and
"tsk==current" is impossible. There is even a WARN_ON against that in
__put_task_struct().
What should we do with it? I would remove it entirely - it's dead code.
Any objections?
One problem is that order-1 allocations are not cached per-cpu - what
about using kmem_cache_alloc for the stack?
--
Manfred
[-- Attachment #2: patch-remove-taskcache --]
[-- Type: text/plain, Size: 1741 bytes --]
--- 2.5/kernel/fork.c 2003-07-13 13:15:01.000000000 +0200
+++ build-2.5/kernel/fork.c 2003-07-13 13:14:00.000000000 +0200
@@ -53,13 +53,6 @@
rwlock_t tasklist_lock __cacheline_aligned = RW_LOCK_UNLOCKED; /* outer */
-/*
- * A per-CPU task cache - this relies on the fact that
- * the very last portion of sys_exit() is executed with
- * preemption turned off.
- */
-static task_t *task_cache[NR_CPUS] __cacheline_aligned;
-
int nr_processes(void)
{
int cpu;
@@ -80,26 +73,8 @@
static void free_task(struct task_struct *tsk)
{
- /*
- * The task cache is effectively disabled right now.
- * Do we want it? The slab cache already has per-cpu
- * stuff, but the thread info (usually a order-1 page
- * allocation) doesn't.
- */
- if (tsk != current) {
- free_thread_info(tsk->thread_info);
- free_task_struct(tsk);
- } else {
- int cpu = get_cpu();
-
- tsk = task_cache[cpu];
- if (tsk) {
- free_thread_info(tsk->thread_info);
- free_task_struct(tsk);
- }
- task_cache[cpu] = current;
- put_cpu();
- }
+ free_thread_info(tsk->thread_info);
+ free_task_struct(tsk);
}
void __put_task_struct(struct task_struct *tsk)
@@ -220,25 +195,18 @@
{
struct task_struct *tsk;
struct thread_info *ti;
- int cpu = get_cpu();
prepare_to_copy(orig);
- tsk = task_cache[cpu];
- task_cache[cpu] = NULL;
- put_cpu();
- if (!tsk) {
- tsk = alloc_task_struct();
- if (!tsk)
- return NULL;
-
- ti = alloc_thread_info(tsk);
- if (!ti) {
- free_task_struct(tsk);
- return NULL;
- }
- } else
- ti = tsk->thread_info;
+ tsk = alloc_task_struct();
+ if (!tsk)
+ return NULL;
+
+ ti = alloc_thread_info(tsk);
+ if (!ti) {
+ free_task_struct(tsk);
+ return NULL;
+ }
*ti = *orig->thread_info;
*tsk = *orig;
next reply other threads:[~2003-07-13 11:52 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-13 11:57 Manfred Spraul [this message]
2003-07-13 12:40 ` [PATCH, RFC] remove task_cache entirely William Lee Irwin III
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3F114935.2000409@colorfullife.com \
--to=manfred@colorfullife.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox