最新のすべての Linux サーバーで CLOCK_MONOTONIC クロックが利用可能であると仮定するのは合理的ですか?
はい。と仮定するのは合理的です。
gettime マニュアル エントリの文言から、本当に古いバージョンの glibc は CLOCK_MONOTONIC
をサポートしていないことが推測できます。 . (私はまだ何歳かを把握しようとしています...しかし、おそらく glibc が POSIX 1003.1 準拠を主張したときです。)
CLOCK_MONOTONIC
(少なくとも) IEEE Std 1003.1, 2004 Edition で指定されましたが、準拠する libc 実装が CLOCK_MONOTONIC
をサポートしない可能性は残っています。 .
Linux カーネル ソース コードは、CLOCK_MONOTONIC
をサポートしています。 少なくとも Linux 3.0 (2011) 以降のクロック。
他のソースから、システムの glibc がどのように構築されたかにも依存します。 (「エミュレートされたタイマー」で構築された場合、CLOCK_MONOTONIC
はサポートされていません。)
サポートされていない場合は次のとおりです:
-
一部の古い CPU チップには問題がある可能性があります。例えばhttps://bugzilla.redhat.com/show_bug.cgi?id=1499480
-
Cygwin の一部 (すべて?) のバージョンではサポートされていません。
-
ARM 上の uCLibc の一部 (すべて?) のバージョンではサポートされていません。
CLOCK_MONOTONIC
でも可能です サポートされますが、バグがあります:
- Linux の clock_gettime(CLOCK_MONOTONIC) の奇妙で非単調な動作
<ブロック引用>
最新のすべての Linux サーバーで CLOCK_MONOTONIC クロックが利用可能であると仮定するのは合理的ですか?
私はこの質問にしかコメントできません。はい、使用するすべての製品グレードのシステムに、Linux がアクセス方法を認識している単調なクロックを使用することは合理的です。これは、仮想サーバーとコンテナー サーバーにも当てはまります。
優れたエンジニアリングでは、これをチェックインし、仮定が破られた場合はエラーを出すよう指示されますが、設計時にはこれを当てにします。