다른 프로세스에 대한 애플리케이션의 시간 인식을 제어할 수 있기를 원합니다. 이것은 내가 시계를 빨리 감길 수 있기를 원한다는 것을 의미합니다. 가속하거나 밟는 것이 허용됩니다(걸어가는 것이 더 안전하고 쉬울지라도).
있다는 것을 알고 있지만 전화를 걸 거나 차단하는 동안 시계를 15초 앞당기는 것과 같은 시나리오를 faketime
처리하지 않기 때문에 그것은 내 요구 사항에 적합하지 않습니다 . 이 경우 호출을 완료하는 데 여전히 10초가 걸립니다. 이것은 커널이 경과 시간을 추적하는 시스템 호출이기 때문에 의미가 있습니다.sleep(10)
epoll_wait(,,,10000)
궁극적으로 내가 원하는 것은 기록된 네트워크 트래픽을 애플리케이션을 통해 재생하는 것입니다. 기록된 각 이벤트를 처리할 때 애플리케이션은 이전 이벤트 이후 실제로 경과된 시간이 것처럼 이벤트를 확인해야 합니다. 즉, 로그에 에 이벤트가 있고 에 00:01:00
또 다른 이벤트가 있는 경우 00:01:07
애플리케이션은 재생 시 7초가 경과했다고 생각해야 합니다(절대 시간은 중요하지 않으며 상대 시간만 중요함). 이 트래픽은 몇 시간 동안 기록되었을 수 있으므로 재생을 수행하는 데 그렇게 오랜 시간을 소비하고 싶지 않습니다. 따라서 각 유휴 주기 동안 해당 시간이 자연스럽게 지나간 것처럼 시계를 빨리 감는 것이 아이디어입니다. 이러한 "유휴 기간"은 길이가 몇 밀리초에 불과하지만(예: 약 80밀리초) 그 수는 수천에서 수백만에 이릅니다.
VM 내부에서 애플리케이션을 실행한 다음 VM 외부에서 VM의 시계를 제어해야 할 수도 있습니다. 괜찮지만 하이퍼바이저가 이 작업을 수행할 수 있는지 확실하지 않습니다.
간단히 리눅스 커널의 시계를 조정해 보았지만 sleep(10)
위의 상황을 처리할 수 없습니다. (시계가 예정된 종료 시간을 건너뛰더라도 여전히 10초 동안 잠자기 상태입니다.)