首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux time和kvm time虚拟化综述

linux time linux对时间有两种需求: 第一就是获取当前时间,就像人想知道时间时看墙上挂的时钟一样,简称clock,如time()/ftime()/gettimeofday()/data()...clock软件是无法实现的,只能是硬件实现,硬件增加一个counter寄存器,周期性增加,软件想获取当前时间,读一下这个寄存器就行,linux把这个counter称为clocksource,比如这台服务器就有三个...看x86代码,linux初始化这些硬件设备,注册中断,中断处理中都调用到event_handler,简单理解为tick模块注册的函数,调用到tick的这个函数,它负责处理软件定时器,进行进程时间片计算等...看这台虚拟机,模拟rtc和pit,没有hpet。...再考虑一些问题,有全局hpet和局部local apic timer,cpu会用哪个呢?hpet中断哪个cpu处理?其它cpu收不到这个中断怎么tick呢?软件定时器是全局的还是局部的?

3.1K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    clocksource的管理和虚拟化

    所以,先不管这些名词是什么东西,怎么实现的,起码kvm-clock、tsc、hpet、acpi_pm是同一类的东西;并且,在Linux上,统一管理它们,并叫“clocksource”。...中,可以看到tsc的rating是300; linux-4.0.4/arch/x86/kernel/hpet.c中,hpet的rating是250; linux-4.0.4/drivers/clocksource...5, hpet hpet是纯粹的qemu在用户态模拟出来的。 代码qemu-2.8.0-rc4/hw/timer/hpet.c qemu的设备虚拟化逻辑。...注意,是为hpet设备注册了callback函数hpet_timer: 前面是计算下次超时的时间,最后一行很关键,向Guest里inject irq了。...所以,hpet的逻辑就很清晰了:qemu模拟了hpet device,并在用户态周期性的inject irq,在Guest中就觉得是一个timer了。

    4.9K61

    注意了!System.currentTimeMillis() 存在性能问题...

    来到HotSpot源码的hotspot/src/os/linux/vm/os_linux.cpp文件中,有一个javaTimeMillis()方法,这就是System.currentTimeMillis...= -1, "linux error"); return jlong(time.tv_sec) * 1000 + jlong(time.tv_usec / 1000); } 挖源码就到此为止,.../2017/07/23/the-slow-currenttimemillis.html 简单来讲就是: 调用gettimeofday()需要从用户态切换到内核态; gettimeofday()的表现受Linux...系统的计时器(时钟源)影响,在HPET计时器下性能尤其差; 系统只有一个全局时钟源,高并发或频繁访问会造成严重的争用。...HPET计时器性能较差的原因是会将所有对时间戳的请求串行执行。TSC计时器性能较好,因为有专用的寄存器来保存时间戳。缺点是可能不稳定,因为它是纯硬件的计时器,频率可变(与处理器的CLK信号有关)。

    1.8K20

    linux time和kvm time虚拟化综述

    linux time linux对时间有两种需求: 第一就是获取当前时间,就像人想知道时间时看墙上挂的时钟一样,简称clock,如time()/ftime()/gettimeofday()/data()...clock软件是无法实现的,只能是硬件实现,硬件增加一个counter寄存器,周期性增加,软件想获取当前时间,读一下这个寄存器就行,linux把这个counter称为clocksource,比如这台服务器就有三个...看x86代码,linux初始化这些硬件设备,注册中断,中断处理中都调用到event_handler,简单理解为tick模块注册的函数,调用到tick的这个函数,它负责处理软件定时器,进行进程时间片计算等...看这台虚拟机,模拟rtc和pit,没有hpet。...再考虑一些问题,有全局hpet和局部local apic timer,cpu会用哪个呢?hpet中断哪个cpu处理?其它cpu收不到这个中断怎么tick呢?软件定时器是全局的还是局部的?

    2.8K30

    不敢相信?System.currentTimeMillis()存在性能问题

    来到HotSpot源码的hotspot/src/os/linux/vm/os_linux.cpp文件中,有一个javaTimeMillis()方法,这就是System.currentTimeMillis...简单来讲就是: 调用gettimeofday()需要从用户态切换到内核态; gettimeofday()的表现受Linux系统的计时器(时钟源)影响,在HPET计时器下性能尤其差; 系统只有一个全局时钟源...HPET计时器性能较差的原因是会将所有对时间戳的请求串行执行。TSC计时器性能较好,因为有专用的寄存器来保存时间戳。缺点是可能不稳定,因为它是纯硬件的计时器,频率可变(与处理器的CLK信号有关)。...关于HPET和TSC的细节可以参见https://en.wikipedia.org/wiki/HighPrecisionEventTimer与https://en.wikipedia.org/wiki/...~ cat /sys/devices/system/clocksource/clocksource0/available_clocksource tsc hpet acpi_pm ~ cat /sys/

    82110

    时钟也能虚拟化吗

    我们知道kvm有一个半虚拟化的时钟kvm-clock,但是现在只对Linux Guest支持,半虚拟化的时钟具有准确高效的有点,而使用TSC和RTC等时钟存在效率低高延迟的缺点,本文具体介绍一下虚拟化下的时钟原理...传统时钟 我们知道传统时钟有RTC/HPET/PIT/ACPI PM TIMER/TSC等, 这些时钟按原理可分成两类:提供中断的周期性时钟, 如RTC/PIT/HPET等;另一种是提供COUNTER...2.qemu软件模拟的时钟 qemu中有对RTC和hpet都模拟出了相应的设备,例如RTC的典型芯片mc146818。...3.kvm-clock kvm-clock是KVM下Linux Guest默认的半虚拟化时钟源。...Linux Guest中查看当前时钟源是否为kvm-clock: $ cat /sys/devices/system/clocksource/clocksource0/current_clocksource

    3.7K90

    System.currentTimeMillis() 竟然存在性能问题?

    来到HotSpot源码的hotspot/src/os/linux/vm/os_linux.cpp文件中,有一个javaTimeMillis()方法,这就是System.currentTimeMillis...,简单来讲就是: 调用gettimeofday()需要从用户态切换到内核态; gettimeofday()的表现受Linux系统的计时器(时钟源)影响,在HPET计时器下性能尤其差; 系统只有一个全局时钟源...HPET计时器性能较差的原因是会将所有对时间戳的请求串行执行。 TSC计时器性能较好,因为有专用的寄存器来保存时间戳。缺点是可能不稳定,因为它是纯硬件的计时器,频率可变(与处理器的CLK信号有关)。...~ cat /sys/devices/system/clocksource/clocksource0/available_clocksource tsc hpet acpi_pm ~ cat /sys/...devices/system/clocksource/clocksource0/current_clocksource tsc ~ echo 'hpet' > /sys/devices/system/clocksource

    2.9K00

    Linux运维常用知识(3)

    0          0  DMAR_MSI-edge      dmar0   57:        496          0          0          0  IR-HPET_MSI-edge...      hpet2   58:          0          0          0          0  IR-HPET_MSI-edge      hpet3   59:          ...0          0          0          0  IR-HPET_MSI-edge      hpet4   60:          0          0          ...0          0  IR-HPET_MSI-edge      hpet5   70:     126234          0          0          0  IR-PCI-MSI-edge...Linux下,普通用户如何临时获取root权限,来满足工作需要。 在实际工作中,公司不会将root用户直接给员工使用,而是通过员工自己的账号临时获得系统的root权限。

    26.9K34

    实时操作系统

    一般的linux都是GPOS(通用)内核。GPOS是不保证实时的,但是对于大多数应用程序来说是没有问题的。GPOS可以充分利用物理资源。但在实时性要求性比较高的场景需要使用实时内核,RT内核。.../system/clocksource/clocksource0/available_clocksource tsc hpet acpi_pm 所以在上面例子中,时钟源可以选择TSC、HPET以及ACPI_PM...查看当前系统使用的时钟源命令如下: # cat /sys/devices/system/clocksource/clocksource0/current_clocksource tsc 设置时钟源为HPET...什么是中断 Linux 内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。...irqbalance irqbalance是一个linux的实用程序,它主要是用于分发中断请求到CPU核心上,有助于性能的提升。它的目的是寻求省电和性能优化之间的平衡。

    2.4K90

    Linux时间子系统(下)

    前言: 上一篇文章我们简单了解了一些关于时间的概念,以及Linux内核中的关于时间的基本理解。而本篇则会简单说明时钟硬件,以及Linux时间子系统相关的一些数据结构。...还有一个定时器叫做HPET(High Precision Event Timer),它是Intel和微软共同研发的。它不仅是个定时器,而且还有计时器的功能。...HPET不和特定的CPU绑定,所以它可以给任意一个CPU发中断,这点和Local APIC Timer不同。...Linux时间子系统的文件汇总 Linux kernel 时间子系统的源文件位于linux/kernel/time/目录下,基本包含如下: 这里面也包含几个重要的数据结构,接下来会分开说说: Clocksource...显然关于Linux时间子系统的内容,还有很多可以深入挖掘,在此篇幅有限,就不做过多赘述了,也希望同样对操作系统感兴趣的小伙伴与我们一起交流。

    39710
    领券