linuxtick命令的簡單介紹

linux下如何定期自動更新時間

Can use ntpdate or rdate command to sync the datetime with remote server.

創(chuàng)新互聯(lián)公司:自2013年創(chuàng)立以來為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為上千公司企業(yè)提供了專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計和網(wǎng)站推廣服務(wù), 按需策劃設(shè)計由設(shè)計師親自精心設(shè)計,設(shè)計的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據(jù)客戶的實際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。

i.e.:

# ntpdate remote_server

or

# rdate -s remote_server

Also, sync the remote server periodically is a good idea!

# crontab -e

# auto sync with time server at 0:00 everyday

0 0 * * * rdate -t 60 -s stdtime.gov.hk記住,更新完后要用 clock -w 或 hwclock -w 實時間寫入到BIOS中,這樣下次啟動機子時,時間就會自動更新了。 1.在虛擬終端中使用date命令來查看和設(shè)置系統(tǒng)時間查看系統(tǒng)時鐘的操作:# date設(shè)置系統(tǒng)時鐘的操作:# date 091713272003.30通用的設(shè)置格式:# date 月日時分年.秒2.使用hwclock或clock命令查看和設(shè)置硬件時鐘查看硬件時鐘的操作:# hwclock --show 或# clock --show2003年09月17日 星期三 13時24分11秒 -0.482735 seconds設(shè)置硬件時鐘的操作:# hwclock --set --date="09/17/2003 13:26:00"或者# clock --set --date="09/17/2003 13:26:00"通用的設(shè)置格式:hwclock/clock --set --date=“月/日/年 時:分:秒”。3.同步系統(tǒng)時鐘和硬件時鐘Linux系統(tǒng)(筆者使用的是Red Hat 8.0,其它系統(tǒng)沒有做過實驗)默認重啟后,硬件時鐘和系統(tǒng)時鐘同步。如果不大方便重新啟動的話(服務(wù)器通常很少重啟),使用clock或hwclock命令來同步系統(tǒng)時鐘和硬件時鐘。硬件時鐘與系統(tǒng)時鐘同步:# hwclock --hctosys或者# clock --hctosys上面命令中,--hctosys表示Hardware Clock to SYStem clock。系統(tǒng)時鐘和硬件時鐘同步:# hwclock --systohc或者# clock --systohc使用圖形化系統(tǒng)設(shè)置工具設(shè)置時間對于初學(xué)者來,筆者推薦使用圖形化的時鐘設(shè)置工具,如Red Hat 8.0中的日期與時間設(shè)置工具,可以在虛擬終端中鍵“redhat-config-time”命令,或者選擇“K選單/系統(tǒng)設(shè)置/日期與時間”來啟動日期時間設(shè)置工具。使用該工具不必考慮系統(tǒng)時間和硬件時間,只需從該對話框中設(shè)置日期時間,可同時設(shè)置、修改系統(tǒng)時鐘和硬件時鐘。

linux閏秒發(fā)生時,會改變jiffies的值嗎

關(guān)于linux的Jiffies/Tick/HZlinux核心幾個重要跟時間有關(guān)的幾個名詞: HZ、tick、jiffies。1.linux HZlinux核心每隔固定周期會發(fā)出timer interrupt (IRQ 0),HZ是用來定義每一秒有幾次timer interrupts。舉例來說,HZ為1000,代表每秒有1000次timer interrupts,比較常見的設(shè)置是HZ=100??梢酝ㄟ^ cat /proc/interrupt 查看timer中斷次數(shù),并于一秒后再次觀察其值,通過前后差值可以估算HZ的值。要檢查內(nèi)核源碼中HZ的值是什么,可以執(zhí)行命令:#cat kernel/.config grep 'CONFIG_HZ='還可以直接更改文件param.h2.TickTick是HZ的倒數(shù),意即timer interrupt每發(fā)生一次中斷的時間。如HZ為250時,tick為4毫秒(millisecond)。3.JiffiesJiffies為linux核心變數(shù)(32位元變數(shù),unsigned long),它被用來紀(jì)錄系統(tǒng)自開機以來,已經(jīng)過多少的tick。每發(fā)生一次timer interrupt,Jiffies變數(shù)會被加一。在ARM體系結(jié)構(gòu)中,jiffies被初始化為jiffies_64,而jiffies_64是一個u64位元變數(shù),在kernel/timer.c中定義:u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;即jiffies在系統(tǒng)開機時,并非初始化成零,而是被設(shè)為INITAL_JIFFIES(在文件include/linux/jiffies.h中定義為-300*HZ),即代表系統(tǒng)于開機五分鐘后,jiffies便會溢位。那溢位怎么辦?事實上,linux核心定義幾個macro(timer_after、time_after_eq、time_before與time_before_eq),即便是溢位,也能藉由這幾個macro正確地取得jiffies的內(nèi)容。

怎么查 linux 當(dāng)前cpu tick

如果是獲取 cpu 時鐘 的 tick:

clock_t tick1,tick2;

tick1=clock(); // 開機到執(zhí)行這句時的毫秒數(shù) ms

等待一會

tick2=clock(); // 開機到執(zhí)行這句時的毫秒數(shù) ms

dt = (double) (tick2 - tick1); // 或得時間差。

===============

如果是 獲取 CPU cycle count

#include stdint.h

// Windows

#ifdef _WIN32

#include intrin.h

uint64_t rdtsc(){

return __rdtsc();

}

// Linux/GCC

#else

uint64_t rdtsc(){

unsigned int lo,hi;

__asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));

return ((uint64_t)hi 32) | lo;

}

#endif

===================

獲取高精度時間(MS VC++ 6.0編譯器):

// Pentium instruction "Read Time Stamp Counter".

__forceinline unsigned _int64 My_clock(void)

{

_asm _emit 0x0F

_asm _emit 0x31

}

unsigned _int64 Start(void) { return My_clock();}

unsigned _int64 Stop(unsigned _int64 m_start, unsigned _int64 m_overhead)

{return My_clock()-m_start - m_overhead; }

==========

獲取cpu 速度(MS VC++ 6.0編譯器):

void get_CPU_speed()

{

unsigned _int64 m_start=0, m_overhead=0;

unsigned int CPUSpeedMHz;

m_start = My_clock();

m_overhead = My_clock() - m_start - m_overhead;

printf("overhead for calling My_clock=%I64d\n", m_overhead);

m_start = My_clock();

wait_ms(2000);

CPUSpeedMHz=(unsigned int) ( (My_clock()- m_start - m_overhead) / );

printf("CPU_Speed_MHz: %u\n",CPUSpeedMHz);

}

硬件時鐘

有幾個概率需要了解

1.時間周期(Clock Cycle)的頻率:晶體振蕩器在1秒以內(nèi)時鐘周期的個數(shù)=1秒以內(nèi)時鐘脈沖的個數(shù),Linux里面用

#define CLOCK_TICK_RATE 1193180 /* Underlying HZ */

單位為HZ

2.時鐘滴答(Clock Tick):

當(dāng)PIT通道0的計數(shù)器減到0值時,它就在IRQ0上產(chǎn)生一次時鐘中斷,也即一次時鐘滴答。PIT通道0的計數(shù)器的初始值決定了要過多少時鐘周期才產(chǎn)生一次時鐘中斷。

3.時鐘滴答的頻率(HZ):1秒以內(nèi)產(chǎn)生時間滴答個數(shù)

HZ在arm和i386上定義為100,ALPHA和IA62為1024 ,IBM Power PC為1000

i386 1個時鐘滴答時間為1000ms/100=10ms。

4.時鐘滴答的時間間隔(tick)

long tick = (1000000 + HZ/2) / HZ; /* timer interrupt period */? ?單位為us ,tick=10ms,也可以通過HZ來計算

linux中#define TICK_SIZE= tick

1s=1,000,000us

(5)宏LATCH:Linux用宏LATCH來定義要寫到PIT通道0的計數(shù)器中的值,它表示PIT將沒隔多少個時鐘周期產(chǎn)生一次時鐘中斷。

LATCH=(1秒之內(nèi)的時鐘周期個數(shù))÷(1秒之內(nèi)的時鐘中斷次數(shù))=(CLOCK_TICK_RATE)÷(HZ)

Linux為取整 #define LATCH=(CLOCK_TICK_RATE + HZ/2) / HZ。

時鐘周期理解:時鐘脈沖,電平從0到1(或者相反)。

CLOCK_TICK_RATE和HZ都是 頻率 :1秒以內(nèi)時鐘周期 頻率 ,1秒以內(nèi)時鐘滴答 頻率 。

TSC使用CPU頻率,在現(xiàn)代計算機中CPU可能降頻也可能超率,TSC時鐘不準(zhǔn)確。

順序為HPET APCI PMTPICTSC

local cpu APIC只在單CPU場景上使用,如進程調(diào)度時間.

參考:

網(wǎng)頁名稱:linuxtick命令的簡單介紹
文章地址:http://muchs.cn/article28/docopjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司云服務(wù)器、網(wǎng)站導(dǎo)航、Google、全網(wǎng)營銷推廣小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)