mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Stop wasting time on malloc in snprintf_zstd_header
Profiling zdb -vvvvv on datasets with a lot of zstd blocks, we find ourselves spending quite a lot of time on malloc/free, because we allocate a 16M abd each call, and never free it, so we're leaking 16M per call as well. This seems sub-optimal. So let's just keep the buffer around and reuse it. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Rob Norris <robn@despairlabs.com> Signed-off-by: Rich Ercolani <rincebrain@gmail.com> Closes #15721
This commit is contained in:
		
							parent
							
								
									3425484eb9
								
							
						
					
					
						commit
						4d4972ed98
					
				| @ -2360,7 +2360,7 @@ static void | ||||
| snprintf_zstd_header(spa_t *spa, char *blkbuf, size_t buflen, | ||||
|     const blkptr_t *bp) | ||||
| { | ||||
| 	abd_t *pabd; | ||||
| 	static abd_t *pabd = NULL; | ||||
| 	void *buf; | ||||
| 	zio_t *zio; | ||||
| 	zfs_zstdhdr_t zstd_hdr; | ||||
| @ -2391,7 +2391,8 @@ snprintf_zstd_header(spa_t *spa, char *blkbuf, size_t buflen, | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	pabd = abd_alloc_for_io(SPA_MAXBLOCKSIZE, B_FALSE); | ||||
| 	if (!pabd) | ||||
| 		pabd = abd_alloc_for_io(SPA_MAXBLOCKSIZE, B_FALSE); | ||||
| 	zio = zio_root(spa, NULL, NULL, 0); | ||||
| 
 | ||||
| 	/* Decrypt but don't decompress so we can read the compression header */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Rich Ercolani
						Rich Ercolani