2.3 KiB
2.3 KiB
Audit Logging Performance Benchmarks
Test Environment
- Python 3.10
- 8-core CPU @ 3.2GHz
- 32GB RAM
- SSD Storage
Benchmark Methodology
Tests measure operations per second (ops/sec) for:
- Log entry creation with HMAC-SHA256
- Integrity verification of log chains
- Concurrent access performance
Test Cases
Single-threaded Performance
import timeit
from security.memory.audit import MemoryAudit
from security.rbac_engine import RBACEngine
rbac = RBACEngine()
audit = MemoryAudit(rbac)
def test_log_operation():
audit.log_operation("read", "test_key", True, "user1")
# Warm up
for _ in range(1000):
test_log_operation()
# Benchmark
time = timeit.timeit(test_log_operation, number=10000)
print(f"Log operations/sec: {10000/time:.2f}")
Multi-threaded Performance
import threading
from security.memory.audit import MemoryAudit
from security.rbac_engine import RBACEngine
rbac = RBACEngine()
audit = MemoryAudit(rbac)
threads = []
results = []
def worker():
for i in range(1000):
results.append(
audit.log_operation("write", f"key_{i}", True, "user1")
)
# Create threads
for _ in range(8):
t = threading.Thread(target=worker)
threads.append(t)
# Run and time
start = time.time()
for t in threads:
t.start()
for t in threads:
t.join()
duration = time.time() - start
print(f"8-thread throughput: {8000/duration:.2f} ops/sec")
Integrity Verification
import timeit
from security.memory.audit import MemoryAudit
from security.rbac_engine import RBACEngine
rbac = RBACEngine()
audit = MemoryAudit(rbac)
# Populate with test data
for i in range(10000):
audit.log_operation("read", f"key_{i}", True, "user1")
# Benchmark verification
time = timeit.timeit(audit.verify_log_integrity, number=100)
print(f"Verifications/sec: {100/time:.2f}")
Expected Results
| Test Case | Target Performance |
|---|---|
| Single-threaded logging | ≥ 15,000 ops/sec |
| 8-thread throughput | ≥ 50,000 ops/sec |
| Integrity verification | ≥ 500 verif/sec |
Measurement Notes
- Run benchmarks on isolated system
- Disable other processes during tests
- Repeat tests 5 times and average results
- Monitor CPU and memory usage during tests