Virtual time for applications

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I am interested in slowing down the flow of time on a per-task basis
for emulation purposes.  This means that when a task calls sleep(1),
it should be made to believe that it has indeed slept for 1 second,
but in real time, it should be slowed down to a configurable parameter
(say 10 seconds).  Let the ratio of real time passed for every second
of virtual time be the "time dilation" factor.

>From the looks of it, it seems like intercepting all system calls from
a task (using ptrace) and manipulating all timer related calls would
suffice.  But then, the kernel also creates timers indirectly, for
e.g., in the network stack: retransmission timers, delack timers, etc.
 I would like to trace those indirect timers as well.

One approach would be to hook into all timer calls from the TCP stack
(say) and manipulate the values for the timers accordingly.  The 4
main timers that I've seen are: Retransmit timer, DelAck timer, Zero
Window Probe timer and KeepAlive timer.  Apart from this, the packets
are also timestamped and this would also have to change.  Since I
would like to change the timers only for certain processes..  I would
like to know how to identify the pid of the process that owns a
socket, from struct sock *sk.

Wrapping the whole kernel inside a VM and faking the global timer
interrupt would be a simpler way to go, but I would like to have a
lightweight mechanism, without the hassles of setting and configuring
a VM, etc.  If there are other simpler approaches, please let me know!

Thanks,
-- 
Vimal

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux