mempool에서 할당된 packet들이 여기저기에서 쓰이는데
mempool을 해제하기 전에 모든 packet들이 mempool에 들어와야만 해제 가능.
1. Mempool 과 Eal 의 lifetime을 분리하고 garbage collection thread를 도입
garbage collection thread가 일정 주기로 mempool의 arc 카운터 개수와
더불어서 mempool의 packet count (4096짜리면 다시 원래 4096개가 모였는지)
를 검사하여 arc가 더이상 없고 모든 패킷들이 수거 완료되었을 때에 자동으로 해제
2. Mempool을 Eal에 종속시키고 Eal 소멸 시에 동시에 소멸할 수 있도록 함.
구현은 쉽지만 Eal 진행 중에 mempool을 동적으로 없앴다가 다시 복구하는 등의 작업을 할 수 없음.
문제
mempool에서 할당된 packet들이 여기저기에서 쓰이는데 mempool을 해제하기 전에 모든 packet들이 mempool에 들어와야만 해제 가능.
1. Mempool 과 Eal 의 lifetime을 분리하고 garbage collection thread를 도입
garbage collection thread가 일정 주기로 mempool의 arc 카운터 개수와 더불어서 mempool의 packet count (4096짜리면 다시 원래 4096개가 모였는지) 를 검사하여 arc가 더이상 없고 모든 패킷들이 수거 완료되었을 때에 자동으로 해제
2. Mempool을 Eal에 종속시키고 Eal 소멸 시에 동시에 소멸할 수 있도록 함.
구현은 쉽지만 Eal 진행 중에 mempool을 동적으로 없앴다가 다시 복구하는 등의 작업을 할 수 없음.
결론
일단 2안으로 진행하기로 함.