mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	[PATCH] oom: cpuset hint
cpuset_excl_nodes_overlap does not always indicate that killing a task will not free any memory we for us. For example, we may be asking for an allocation from _anywhere_ in the machine, or the task in question may be pinning memory that is outside its cpuset. Fix this by just causing cpuset_excl_nodes_overlap to reduce the badness rather than disallow it. Signed-off-by: Nick Piggin <npiggin@suse.de> Acked-by: Paul Jackson <pj@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
		
							parent
							
								
									4ff1ffb487
								
							
						
					
					
						commit
						7887a3da75
					
				
					 1 changed files with 8 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -128,6 +128,14 @@ unsigned long badness(struct task_struct *p, unsigned long uptime)
 | 
			
		|||
	if (cap_t(p->cap_effective) & CAP_TO_MASK(CAP_SYS_RAWIO))
 | 
			
		||||
		points /= 4;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * If p's nodes don't overlap ours, it may still help to kill p
 | 
			
		||||
	 * because p may have allocated or otherwise mapped memory on
 | 
			
		||||
	 * this node before. However it will be less likely.
 | 
			
		||||
	 */
 | 
			
		||||
	if (!cpuset_excl_nodes_overlap(p))
 | 
			
		||||
		points /= 8;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Adjust the score by oomkilladj.
 | 
			
		||||
	 */
 | 
			
		||||
| 
						 | 
				
			
			@ -198,9 +206,6 @@ static struct task_struct *select_bad_process(unsigned long *ppoints)
 | 
			
		|||
			continue;
 | 
			
		||||
		if (p->oomkilladj == OOM_DISABLE)
 | 
			
		||||
			continue;
 | 
			
		||||
		/* If p's nodes don't overlap ours, it won't help to kill p. */
 | 
			
		||||
		if (!cpuset_excl_nodes_overlap(p))
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * This is in the process of releasing memory so wait for it
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue