mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-04 03:27:12 -05:00 
			
		
		
		
	alter defaults for workers and threads to allow more parallel tasks #446
This commit is contained in:
		
							parent
							
								
									8dde7fa043
								
							
						
					
					
						commit
						ab04817bea
					
				@ -376,25 +376,24 @@ PAPERLESS_THREADS_PER_WORKER=<num>
 | 
			
		||||
        use a higher thread per worker count.
 | 
			
		||||
 | 
			
		||||
    The default is a balance between the two, according to your CPU core count,
 | 
			
		||||
    with a slight favor towards threads per worker, and leaving at least one core
 | 
			
		||||
    free for other tasks:
 | 
			
		||||
    with a slight favor towards threads per worker:
 | 
			
		||||
 | 
			
		||||
    +----------------+---------+---------+
 | 
			
		||||
    | CPU core count | Workers | Threads |
 | 
			
		||||
    +----------------+---------+---------+
 | 
			
		||||
    |              1 |       1 |       1 |
 | 
			
		||||
    +----------------+---------+---------+
 | 
			
		||||
    |              2 |       1 |       1 |
 | 
			
		||||
    |              2 |       2 |       1 |
 | 
			
		||||
    +----------------+---------+---------+
 | 
			
		||||
    |              4 |       1 |       3 |
 | 
			
		||||
    |              4 |       2 |       2 |
 | 
			
		||||
    +----------------+---------+---------+
 | 
			
		||||
    |              6 |       2 |       2 |
 | 
			
		||||
    |              6 |       2 |       3 |
 | 
			
		||||
    +----------------+---------+---------+
 | 
			
		||||
    |              8 |       2 |       3 |
 | 
			
		||||
    |              8 |       2 |       4 |
 | 
			
		||||
    +----------------+---------+---------+
 | 
			
		||||
    |             12 |       3 |       3 |
 | 
			
		||||
    |             12 |       3 |       4 |
 | 
			
		||||
    +----------------+---------+---------+
 | 
			
		||||
    |             16 |       3 |       5 |
 | 
			
		||||
    |             16 |       4 |       4 |
 | 
			
		||||
    +----------------+---------+---------+
 | 
			
		||||
 | 
			
		||||
    If you only specify PAPERLESS_TASK_WORKERS, paperless will adjust
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,7 @@ class TestSettings(TestCase):
 | 
			
		||||
        self.assertEqual(default_threads, 1)
 | 
			
		||||
 | 
			
		||||
    def test_workers_threads(self):
 | 
			
		||||
        for i in range(2, 64):
 | 
			
		||||
        for i in range(1, 64):
 | 
			
		||||
            with mock.patch("paperless.settings.multiprocessing.cpu_count") as cpu_count:
 | 
			
		||||
                cpu_count.return_value = i
 | 
			
		||||
 | 
			
		||||
@ -31,4 +31,4 @@ class TestSettings(TestCase):
 | 
			
		||||
                self.assertTrue(default_workers >= 1)
 | 
			
		||||
                self.assertTrue(default_threads >= 1)
 | 
			
		||||
 | 
			
		||||
                self.assertTrue(default_workers * default_threads < i, f"{i}")
 | 
			
		||||
                self.assertTrue(default_workers * default_threads <= i, f"{i}")
 | 
			
		||||
 | 
			
		||||
@ -354,8 +354,10 @@ LOGGING = {
 | 
			
		||||
 | 
			
		||||
def default_task_workers():
 | 
			
		||||
    # always leave one core open
 | 
			
		||||
    available_cores = max(multiprocessing.cpu_count() - 1, 1)
 | 
			
		||||
    available_cores = max(multiprocessing.cpu_count(), 1)
 | 
			
		||||
    try:
 | 
			
		||||
        if available_cores < 4:
 | 
			
		||||
            return available_cores
 | 
			
		||||
        return max(
 | 
			
		||||
            math.floor(math.sqrt(available_cores)),
 | 
			
		||||
            1
 | 
			
		||||
@ -376,7 +378,7 @@ Q_CLUSTER = {
 | 
			
		||||
 | 
			
		||||
def default_threads_per_worker(task_workers):
 | 
			
		||||
    # always leave one core open
 | 
			
		||||
    available_cores = max(multiprocessing.cpu_count() - 1, 1)
 | 
			
		||||
    available_cores = max(multiprocessing.cpu_count(), 1)
 | 
			
		||||
    try:
 | 
			
		||||
        return max(
 | 
			
		||||
            math.floor(available_cores / task_workers),
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user