ai-agent/benchmarks/audit_performance.md

100 lines
No EOL
2.3 KiB
Markdown

# 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
```python
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
```python
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
```python
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