Standalone DB - Linux
These results should be viewed as guidelines and not performance guarantees, since there are many variables that affect performance (file set, network configurations, hardware characteristics, etc.). If throughput is important to your implementation, OPSWAT recommends site-specific benchmarking before implementing a production solution.
Environment
Using AWS environment with the specification below:
MetaDefender Core
OS | AWS instance type | vCPU | Memory (GB) | Network bandwidth (Gbps) | Disk type | Benchmark |
---|---|---|---|---|---|---|
Debian 12 | c5.4xlarge | 16 | 32 | Up to 10 | SSD | Amazon EC2 c5.4xlarge - Geekbench |
Client tool
A simple tool written in Python to collect files in a designated folder and submit requests to MetaDefender Core.
files_to_scan = list of files to scan
scan_futures = [asyncio.create_task(self.scan_file(file_path)) for file_path in files_to_scan]
async def scan_file(self, file_path):
api_url = f'{self.core_url}/file'
with open(file_path, 'rb') as file:
file_content = file.read()
headers = {'Content-Type': 'application/octet-stream', 'filename': file_path}
max_retries = 20 # Maximum number of retry attempts
retry_delay = 120 # Delay in seconds before retrying
for attempt in range(max_retries + 1):
try:
response = requests.post(api_url, data=file_content, headers=headers)
status_code = response.status_code
if status_code == 200:
response_json = response.json()
data_id = response_json.get('data_id')
return status_code, response_json, data_id
if status_code == 503:
print(f"Received status code {status_code}. Retrying in {retry_delay} seconds...")
await asyncio.sleep(retry_delay)
else:
return None, None, None
except requests.RequestException as e:
return None, None, None
return None, None, None
OS | AWS instance type | vCPU | Memory (GB) | Network bandwidth (Gbps) | Disk type |
---|---|---|---|---|---|
CentOS 7 | c5.4xlarge | 16 | 32 | Up to 10 | SSD |
Dataset
Detailed information of dataset below will be used for testing:
File category | File type | Number of files | Total size (MB) | Average file size (MB) |
---|---|---|---|---|
Adobe | 370 | 385 MB | 1.0 MB | |
Executable | EXE | 45 | 309.5 MB | 6.9 MB |
MSI | 15 | 45.75 MB | 3.1 MB | |
Image | BMP | 80 | 515 MB | 6.4 MB |
JPG | 420 | 237.5 MB | 0.6 MB | |
PNG | 345 | 169 MB | 0.5 MB | |
Media | MP3 | 135 | 865 MB | 6.4 MB |
MP4 | 50 | 500 MB | 10.0 MB | |
Office | DOCX | 235 | 190 MB | 0.8 MB |
DOC | 225 | 486 MB | 2.2 MB | |
PPTX | 365 | 860 MB | 2.4 MB | |
PPT | 355 | 1950 MB | 5.5 MB | |
XLSX | 340 | 283.5 MB | 0.8 MB | |
XLS | 335 | 284.5 MB | 0.8 MB | |
Text | CSV | 100 | 236 MB | 2.4 MB |
HTML | 1075 | 76 MB | 0.1 MB | |
TXT | 500 | 210 MB | 0.4 MB | |
Archive | ZIP | Compressed files: 10 Extracted files: 270 | Compressed size: 125.5 MB Extracted size: 156.5 MB | Avg compressed size: 12.6 MB Avg extracted size: 0.6 MB |
Summary (compressed) | 5000 | 7728.5 MB | 1.55 MB average file size | |
Summary (extracted) | 5260 | 7759.5 MB | 1.48 MB average file size |
Product Information
Product versions:
- MetaDefender Core version 5.14.0
- Engines:
- Metascan 5: Ahnlab, Bitdefender, ClamAV, ESET, K7
- Metascan 10: Metascan 5, Avira, Quick Heal, Ikarus, Cyren, Tachyon
- Metascan MAX: Metascan 10, NANO, Sophos, McAfee, CrowdStrike Falcon ML, Lionic, Xvirus, Webroot SMD, Cylance, RocketCyber, CMC
- Deep CDR: 7.4.1
- Proactive DLP: 2.23.0
- Archive: 7.4.1
- File type analysis: 7.4.1
- File-based vulnerability assessment: 4.57-236
MetaDefender Core settings
General settings
- Turn off data retention
- Turn off engine update
Archive extraction
- Max recursion level: 99999999
- Max number of extracted files: 99999999
- Max total size of extracted files: 99999999
- Timeout: 10 minutes
- Handle archive extraction task as Failed: true
- Extracted partially: true
Metascan
- Max file size: 99999999
- Scan timeout: 10 minutes
- Per engine scan timeout: 1 minutes
Performance test results
Summary
MetaDefender Core with single engine (technology):
Use case | Scan duration | Throughput | Avg. processing time | Avg./Max CPU usage | Avg./Max RAM usage | Avg. Network speed |
---|---|---|---|---|---|---|
(minutes) | (objects/hour) | (seconds/object) | (%) | (%) | (KB/s) | |
Metascan 5 | 17.3 | 441,362 | 0.008 | 42.4 / 68.6 | 25.8 / 27 | 9,742 |
Metascan 10 | 22.6 | 338,349 | 0.011 | 69.3 / 97 | 34.5 / 35.7 | 7,682 |
Metascan MAX | 65 | 117,361 | 0.031 | 55.3 / 99.5 | 54.4 / 75 | 5,267 |
Deep CDR | 19.4 | 353,031 | 0.010 | 68.7 / 91.7 | 51 / 54.4 | 8,589 |
Proactive DLP | 16.5 | 434,071 | 0.008 | 45.2 / 72.1 | 44.2 / 51.6 | 8,023 |
Vulnerability | 12 | 451,079 | 0.008 | 36.7 / 70.2 | 40.6 / 41 | 10,784 |
MetaDefender Core with common engine packages:
Use case | Scan duration | Throughput | Avg. processing time | Avg./Max CPU usage | Avg./Max RAM usage | Avg. Network speed |
---|---|---|---|---|---|---|
(minutes) | (objects/hour) | (seconds/object) | (%) | (%) | (KB/s) | |
Metascan 5 + Deep CDR | 23.5 | 325,272.6 | 0.011 | 76 / 98.7 | 37.6 / 39.4 | 6,843 |
Metascan 5 + Deep CDR + Proactive DLP | 29.5 | 258,531 | 0.014 | 81.7 / 99.4 | 42 / 50.5 | 8,714 |
Metascan 5 + Deep CDR + Proactive DLP + Vulnerability | 30.7 | 248,720 | 0.014 | 86.4 / 99.6 | 40.8 / 45.4 | 6,373 |
Metascan 10 + Deep CDR | 30.4 | 251,366 | 0.014 | 88.3 / 98.3 | 46.5 / 51.5 | 6,143 |
Metascan 10 + Deep CDR + Proactive DLP | 34.4 | 221,691 | 0.016 | 93 / 99.8 | 50 / 59 | 6,017 |
Metascan 10 + Deep CDR + Proactive DLP + Vulnerability | 36.6 | 208,259 | 0.017 | 93.7 / 99.8 | 50.2 / 56.6 | 6,274 |
Metascan MAX + Deep CDR | 71.1 | 107,266 | 0.034 | 65.4 / 99.5 | 64.3 / 71.7 | 6,853 |
Metascan MAX + Deep CDR + Proactive DLP | 72.1 | 105,831 | 0.034 | 79.8 / 99.9 | 65.3 / 76.7 | 6,467 |
Metascan MAX + Deep CDR + Proactive DLP + Vulnerability | 72.9 | 104,670 | 0.034 | 80 / 99.8 | 66 / 76.8 | 6,183 |
System resource utilization charts
MetaDefender Core with Metascan 10 + Deep CDR + Proactive DLP + Vulnerability:
Utilization charts | |
---|---|
CPU usage | ![]() |
Memory usage | ![]() |
Network usage | |
Disk usage |
MetaDefender Core with Metascan MAX + Deep CDR + Proactive DLP + Vulnerability:
Utilization charts | |
---|---|
CPU usage | ![]() |
Memory usage | ![]() |
Network usage | |
Disk usage |