mirror of
				https://github.com/Icinga/icinga2.git
				synced 2025-10-31 11:14:10 +01:00 
			
		
		
		
	Make the ThreadPool spawn fewer threads
This commit is contained in:
		
							parent
							
								
									3cb2afd454
								
							
						
					
					
						commit
						b5c7e2de4e
					
				| @ -265,18 +265,17 @@ void ThreadPool::ManagerThreadProc(void) | ||||
| 
 | ||||
| 				int tthreads = wthreads - alive; | ||||
| 
 | ||||
| 				/* Make sure there is at least one thread per CPU */ | ||||
| 				int ncput = std::max(static_cast<unsigned int>(Application::GetConcurrency()) / QUEUECOUNT, 4U); | ||||
| 				if (alive + tthreads < ncput) | ||||
| 					tthreads = ncput - alive; | ||||
| 				/* Make sure there is at least one thread per queue */ | ||||
| 				if (alive + tthreads < 1) | ||||
| 					tthreads = 1 - alive; | ||||
| 
 | ||||
| 				/* Don't kill more than 8 threads at once. */ | ||||
| 				if (tthreads < -8) | ||||
| 					tthreads = -8; | ||||
| 				/* Don't kill more than 2 threads at once. */ | ||||
| 				if (tthreads < -2) | ||||
| 					tthreads = -2; | ||||
| 
 | ||||
| 				/* Spawn more workers if there are outstanding work items. */ | ||||
| 				if (tthreads > 0 && pending > 0) | ||||
| 					tthreads = 8; | ||||
| 					tthreads = 2; | ||||
| 
 | ||||
| 				if (m_MaxThreads != UINT_MAX && (alive + tthreads) * (sizeof(m_Queues) / sizeof(m_Queues[0])) > m_MaxThreads) | ||||
| 					tthreads = m_MaxThreads / (sizeof(m_Queues) / sizeof(m_Queues[0])) - alive; | ||||
|  | ||||
| @ -30,7 +30,7 @@ | ||||
| namespace icinga | ||||
| { | ||||
| 
 | ||||
| #define QUEUECOUNT 4 | ||||
| #define QUEUECOUNT 4U | ||||
| 
 | ||||
| enum SchedulerPolicy | ||||
| { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user