Стал замечать что скорость создания/удаление тучи мелких файликов на разных системах (btrfs, ext4, xfs) существенно различается. Запилил по-быстрому скрипт на питоне для замеров:
import os
import random
import time
def CreateFiles(dir, numFiles, maxFileSize):
try:
buffer = os.urandom(maxFileSize)
except Exception as e:
print( e )
return
for i in range(numFiles):
filePath = dir + '/' + str(i)
try:
f = open( filePath, "wb" )
f.seek( 0 )
f.write( buffer )
f.close()
except Exception as e:
print( e )
def CreateDirs(dir, numDirs, numFiles, maxFileSize):
for i in range(numDirs):
dirPath = dir + '/' + str(i)
try:
os.mkdir( dirPath )
except Exception as e:
print( e )
CreateFiles(dirPath, numFiles, maxFileSize)
def RemoveAllFiles(dir, numDirs, numFiles):
for i in range(numDirs):
dirPath = dir + '/' + str(i)
for j in range(numFiles):
filePath = dirPath + '/' + str(j)
try:
os.remove( filePath )
except Exception as e:
#print( "File already removed, skipping..." )
pass
try:
os.rmdir( dirPath )
except Exception as e:
pass
def RemoveRandomFiles(dir, numDirs, numFiles, numRemovals):
step = numFiles / numRemovals
for i in range(numDirs):
dirPath = dir + '/' + str(i)
index = 0
for j in range(numRemovals):
index += random.randint(1, step)
filePath = dirPath + '/' + str(index)
#print( index )
try:
os.remove( filePath )
except Exception as e:
#print( "File already removed, skipping..." )
pass
def Main():
dir = "mnt"
numFiles = 16 * 1024
numDirs = 10
maxFileSize = 4 * 1024
numRemovals = numFiles / 2
CurrentTime = lambda: int(round(time.time() * 1000))
start = CurrentTime()
CreateDirs(dir, numDirs, numFiles, maxFileSize)
t = CurrentTime() - start
print( "Create dirs: %d" % t )
start = CurrentTime()
RemoveRandomFiles(dir, numDirs, numFiles, numRemovals)
t = CurrentTime() - start
print( "Remove files randomly: %d" % t )
start = CurrentTime()
RemoveAllFiles(dir, numDirs, numFiles)
t = CurrentTime() - start
print( "Remove all files: %d" % t )
Main()
Что выводит у вас скрипт? Напишите тип вашей файловой системы, опции монтирования этой ФС, SSD или HDD, планировщик ядра
P.S. btrfs'ка может и грузит проц, зато пожимает все в 3-5 раз.