首頁 發表: 美術繪圖 | 美術設計 | 攝影 | 熱門標籤 美術討論: 美術工作 | 美術比賽 | 展覽活動 | 美術相關 | 一般討論 | 美術同好 CG 討論 :: Photoshop | Painter | 3D 行動 | AMP

【 立即註冊 】 : 更改個人資料 : : 登入

會員名稱: 登入密碼: 保持登入

閏秒 (leap second) 對於 Windows & Linux 系統的影響

發表新主題 回覆主題 討論區 Windows, Linux, Perl, PHP, C/C++, Driver, Web 理論、應用、硬體、軟體

| 1頁, 共1
發表人 人氣點閱:9410
Type



繪圖畫廊設計藝廊
攝影相簿留言板
最愛收藏分類標籤
暱稱: Type
註冊: 2002-11-30
發表: 7958
來自: vovo2000.com
V幣: 869963
@ 1F
閏秒 (leap second) 對於 Windows & Linux 系統的影響 2015-01-12 16:26

閏秒 (leap second) 對於 Windows Server, Windows 7 & Linux 系統的影響




「閏秒」的英文:



=> 閏秒英文 leap second (自轉造成)
=> 閏年英文 leap year (公轉造成)


閏秒的原理


=> 地球自轉並不穩定,會受月球潮汐之摩擦力及季節性等因素影響,國際上是以基態銫原子躍遷為準之「國際原子時」(International Atomic Time, TAI)為標準時間尺度。
為使一般民眾生活習慣之世界時能與國際原子時相符合,科學家將國際原子時加上閏秒,稱為世界協調時(Coordinated Universal Time, UTC),作為最終之國際時間標準和原子鐘計時的誤差等因素。
需要每隔幾年「根據實驗數據人為調整(通常是增加)」,沒有一定公式可以判斷。

通常最近幾年都是 +1 秒。

Ref: 經濟部標準檢驗局 (2012年): http://www.bsmi.gov.tw/bsmiGIP/wSite/ct?xItem=42611&ctNode=4052&mp=1



最近的閏秒調整 2012/2015



通常在 6/30 or 12/31 的 23:59:59 時調整(UTC+0000),59 秒後,下一秒是「神奇的」 60 秒,最後才是 00:00:00

2012 年是在 06/30 23:59:59 調整
2015 年是在 06/30 23:59:59 調整

對於 +8000 的台灣、香港、中國大陸,以及 +9000 日本、韓國來說


就會是 2015/07/01 早上七點五十九分、八點五十九分調整:
e.g.
(GMT+8) 07:59:59 -> 07:59:60 -> 08:00:00
(GMT+9) 08:59:59 -> 08:59:60 -> 09:00:00


閏秒造成的系統問題:舉例一「收費系統」



代碼:


# cat php_leap_second.php

假設程式是這樣寫的
這段程式 or PHP API 本身沒有處理好閏秒,
可能要想辦法用  EPOCH UNIT timestamp 避開此問題,而非使用 Wallclock string

<?PHP

$t1 = new DateTime('2012-06-30T23:59:59UTC');
$t2 = new DateTime('2012-06-30T23:59:60UTC');
$t3 = new DateTime('2012-07-01T00:00:00UTC');
$t4 = new DateTime('2012-07-01T00:00:01UTC');

print_r( $t2->diff($t1) );
print_r( $t3->diff($t1) );
print_r( $t3->diff($t2) );
print_r( $t4->diff($t2) );

?>

# php --version

PHP 5.5.9-1ubuntu4.5 (cli) (built: Oct 29 2014 11:59:10)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

# php php_leap_second.php

DateInterval Object
(
    [y] => 0
    [m] => 0
    [d] => 0
    [h] => 0
    [i] => 0
    [s] => 1
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 1
    [days] => 0
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)
DateInterval Object
(
    [y] => 0
    [m] => 0
    [d] => 0
    [h] => 0
    [i] => 0
    [s] => 1
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 1
    [days] => 0
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)
DateInterval Object
(
    [y] => 0
    [m] => 0
    [d] => 0
    [h] => 0
    [i] => 0
    [s] => 0      <---------- !!!!!!!! NO DIFF !!!!!!!!!!
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 0
    [days] => 0
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)
DateInterval Object
(
    [y] => 0
    [m] => 0
    [d] => 0
    [h] => 0
    [i] => 0
    [s] => 1
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 1
    [days] => 0
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)




閏秒造成的系統問題:舉例二「Log Parser/Analytics」



你的 Log Parser/Analytics 可能沒辦法處理閏秒,因為這一天是 86401 秒
導致 report 產生、平均或標準化的計算等,發生問題。
不過這應該還好。



Linux 對於閏秒的作法




理論上 Linux kernel 3.3 以前的有這個 bug(系統有跑 NTP client),
59:60 會直接造成 kernel stall 或其他症狀
但 2012 年就應該已經修復完畢。

=> http://serverfault.com/questions/403732/anyone-else-experiencing-high-rates-of-linux-server-crashes-during-a-leap-second



如果你的 Linux 系統沒有升級,或者你有擔心的話,
可在 2015/6/30 日,把系統的 NTP client 關閉,
改成吃系統的 RTC,等到 2015/07/01 中午 12:00 之後再改回來。

或者,
選擇 NTP Server 會餵你 59:59 --> 59:59 --> 00:00 的 (e.g. 下列提到的 Google)



微軟 Windows 7, Vista, Server 2008/2003 的 Time Service的作法



=> http://support.microsoft.com/kb/909614/en-us

微軟 Windows 7/Vista/Server 2003/2008 的作法比較直接類似 workaorund ,
Client 端不管 NTP 給你的 59:60 ,就直接快一秒(或者慢一秒)給你;
也就是沒有 59:60,
直接給你 00:00(==59:60) & 00:01(==00:00) 等到下次 time sync 再校正



3. Google NTP Server 對於閏秒的作法: Leap Smear




=> http://googleblog.blogspot.tw/2011/09/time-technology-and-leaping-seconds.html

Google 的作法類似微軟也是 workaround bypass 59:60,但更為「溫和漸進一點」

Google 是透過一個公式,緩慢的把要加入的這一秒(或要扣除的這一秒)慢慢放到 NTP server 上:
@ 在 6/30 or 12/31 這一天,
透過緩慢的「塗抹 Smear + 欺騙 Lie」,把這一秒數切割成 ms 慢慢加上去(或者減掉)
最後 59:59 的時候,這一秒就加完(扣完)。

公式如下
代碼:


lie(t) = (1.0 - cos(pi * t / w)) / 2.0


leap-second-085960-jp.jpg
leap-second-085960-jp.jpg



________________

美術插畫設計案子報價系統 v0.1 Beta 版
爪哇禾雀
Type



繪圖畫廊設計藝廊
攝影相簿留言板
最愛收藏分類標籤
暱稱: Type
註冊: 2002-11-30
發表: 7958
來自: vovo2000.com
V幣: 869963
@ 2F
Re: 閏秒 (leap second) 對於 Windows & Linux 系統的影響 2016-11-30 20:46

NTP leap seconds patched backported 2.6.32 kernel (RHEL)
kernel-backport_NTP_leap_second_patched.jpg
kernel-backport_NTP_leap_second_patched.jpg



________________

美術插畫設計案子報價系統 v0.1 Beta 版
爪哇禾雀















資訊相關理論、技術、管理、應用、產品等
發表新主題 回覆主題
一般討論
發表:美術繪圖、插畫設計
新聞、活動、評論、公告
最近 10 則討論
請幫幫我 謝謝......
By Type R:1 V:36 09/25
PhotoShop教學綜合練習
By bjhbjh001 R:0 V:44 09/24
PhotoShop教學修復工具02
By bjhbjh001 R:0 V:131 09/15
PhotoShop教學修復工具01
By bjhbjh001 R:0 V:107 09/15
PhotoShop教學課程影片印章工具02
By bjhbjh001 R:0 V:116 09/15
PhotoShop教學印章工具01
By bjhbjh001 R:0 V:125 09/15
最近 10 則討論
2017 辛普家庭
By .*(ॐ)宇宙的聲音 *. R:17 V:955 09/26
陰陽師 大天狗
By 涼涼 R:0 V:17 09/26
肥恩鋼骨:放心!阿福!我來接手!
By 肥肥恩 R:0 V:18 09/25
自我~~
By Type R:1 V:43 09/25
爵迹-銀塵
By 文子 R:0 V:35 09/25
封神演義-楊戩
By R:0 V:42 09/25
【Alone】
By Type R:1 V:72 09/24
肥恩班恩:權力還給人民!
By 肥肥恩 R:0 V:37 09/24
[二創]雷姆[20170923]
By 知徐 R:0 V:60 09/23
肥恩川普:You're fired!
By 肥肥恩 R:0 V:72 09/23
最近 10 則討論
第11屆知名小說封面創作競賽
By Medibang R:0 H:571 09/04
簡義棋油畫創作展
By 金車文藝中心 R:0 H:204 08/24