ai-agent/benchmarks/audit_performance.md

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:

  1. Log entry creation with HMAC-SHA256
  2. Integrity verification of log chains
  3. 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