## 1 Introduction
After all, direct access to the TSC counter via _RDTSC_ instruction can improve CPU overhead for time acquisition and computations on Linux by avoiding expensive system calls, but precise sleep operations remain a more challenging task. Sleep procedures, whose realization in the standard GNU C library has an insufficient precision due to the long wake-up time, which can be even more aggravated when sharing resources between host and virtual machines (VM). To overcome issues with standard system calls, an interface to available time counters as well as for sleep operations the _HighPerTimer_ library [6] have been used besides the standard timing means of Linux OS. This library has been developed in terms of our previous research as an alternative to the Linux system timer functions, which operate timing functions by direct access to the hardware. By applying different techniques for timekeeping on Linux machines, we intend to disclose problems that can arise for time-critical network applications running in a virtualized environment. Further, during the experiments, we investigated the impact of timing implementation within the workflow of two AvB tools--_Kite2_[8] and _Yaz_[9]--for estimation of network performance. In our previous work, the accuracy of these tools in high-speed networks has been compared [8; 10]. By contrast, the target of this research is to explore which timing methods can be more suitable for implementing high-speed applications in a virtual environment. The first tool _Kite2_ is our implementation of the modified AvB active probing algorithm and one of a very few tools which can deal with 10 Gbps and faster links. The second one, _Yaz_, was approved as an accurate tool, which scales well with the increasing cross traffic solution on dozens of Mbps links, and is available in open source [11; 12]. The algorithms of _Kite2_ have been developed in terms of our previous data transport research [13; 14; 15; 16; 17] and use _HighPerTimer_ library, whereas _Yaz_ is based on system calls for timing acquisition and rough timing error correction. For 1 Gbps links, a specific adoption for the source code using _Yaz_ was required. Further details about that experiment setup can be found in Section 2.2.3. Figure 1 shows the active probing model used by both _Yaz_ and _Kite2_ AvB tools where \(S_{n}\) is a probe packet \(n\), \(i_{sn}\) is the sending interpacket interval and \(i_{m}\) is the interpacket interval on the receiver side. The main principle of this method is to find the optimal inter-packet interval, which is strictly dependent on timing operations precision. Therefore, the accurately chosen inter-packet interval on the sender side allows achieving the actual available bandwidth of the network path. On the other hand, inaccurate timestamping of the packets leads to under- or overestimation by the application, which is not able to meet an adequate sending data rate to the AvB. The goal of the AvB algorithm is to find the minimal value \(i_{s}\) after which the difference \(i_{r}-i_{s}\) is minimal. Firstly, the study characterizes the timing behavior under stressful virtualization conditions, where the median wake up time of standard system sleep function is about 40-100 \(\upmu\)s, which also implies the lower bound of inter-packet interval. Applying Equation (1), it is found that the corresponding data rate limit is 120-320 Mbps using standard 1500 bytes of MTU size. \[R=\frac{8\cdot MTU}{T_{i}} \tag{1}\]  
where \(R\) is data rate in bps and \(T_{i}\) is the inter-packet time interval in seconds. The replacement to the alternative timing methods can provide up to 56 ns wake up time and increasing the precision allows us to operate with 100 Gbps and higher, which better matches to the requirements of modern Ethernet networks. To increase network performance and synchronize work of applications such as video streaming, multiplayer video games and content delivery services, it is necessary to use timing functions that are as precise as possible.