2018年10月21日日曜日

中古 HDD の初期確認、6個目(2018年10月)

まだ作成途中の記事です。

これまで5個の中古 HDD を購入しましたが、X個目 (201x年yy月購入…確認中) が限界に達した (Reallocated_Sector_Ct が THRESH を下回った) ので、交換用に6個目を購入しました。今回もしつこく Seagate Barracuda ES.2 1TB です。同じ機種のほうが経験積めると思うので。

いつもの初期確認、まずは S.M.A.R.T. の値です。
smartctl 5.43 2016-09-28 r4347 [x86_64-linux-2.6.32-754.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   082   063   044    Pre-fail  Always       -       168507570
  3 Spin_Up_Time            0x0003   097   091   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       127
  5 Reallocated_Sector_Ct   0x0033   099   099   036    Pre-fail  Always       -       39
  7 Seek_Error_Rate         0x000f   061   060   030    Pre-fail  Always       -       4296392929
  9 Power_On_Hours          0x0032   088   088   000    Old_age   Always       -       10830
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       1
 12 Power_Cycle_Count       0x0032   099   037   020    Old_age   Always       -       1413
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   068   046   045    Old_age   Always       -       32 (Min/Max 25/32)
194 Temperature_Celsius     0x0022   032   054   000    Old_age   Always       -       32 (0 24 0 0 0)
195 Hardware_ECC_Recovered  0x001a   048   004   000    Old_age   Always       -       168507570
197 Current_Pending_Sector  0x0012   002   002   000    Old_age   Always       -       2008
198 Offline_Uncorrectable   0x0010   002   002   000    Old_age   Offline      -       2008
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
稼働時間は 10830 時間 (約451日) でしたが、Power_Cycle_Count が 1413 と高め (過去に入手したものは 100 程度) なので、使用する時だけ電源投入するという運用だったのではと考えられます。それから、Current_Pending_Sector が 2008 と高い値になってるので、このままでは早晩 I/O エラーに遭遇すると考えられます。
いままでに入手した6個の中古 HDD の中では、最も状態が悪いですが、ジャンク扱いということで格安 (6個の中では最安値) で入手しています。

このような状態の HDD は、これまでの経験上、SecureErase または こちらの手順 でリフレッシュできる場合が多く、ZFS の raid 領域であれば、まだ十分使用できるとふんでます。

そんなわけで、今回は、こちらの手順 のほうで、リフレッシュ作業してみました。
結果は次のとおりです。
smartctl 5.43 2016-09-28 r4347 [x86_64-linux-2.6.32-754.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   060   060   044    Pre-fail  Always       -       205654349
  3 Spin_Up_Time            0x0003   098   091   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       128
  5 Reallocated_Sector_Ct   0x0033   099   099   036    Pre-fail  Always       -       39
  7 Seek_Error_Rate         0x000f   066   060   030    Pre-fail  Always       -       4299157096
  9 Power_On_Hours          0x0032   088   088   000    Old_age   Always       -       11030
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       1
 12 Power_Cycle_Count       0x0032   099   037   020    Old_age   Always       -       1414
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   024   024   000    Old_age   Always       -       76
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   066   046   045    Old_age   Always       -       34 (Min/Max 31/34)
194 Temperature_Celsius     0x0022   034   054   000    Old_age   Always       -       34 (0 24 0 0 0)
195 Hardware_ECC_Recovered  0x001a   052   004   000    Old_age   Always       -       205654349
197 Current_Pending_Sector  0x0012   100   002   000    Old_age   Always       -       3
198 Offline_Uncorrectable   0x0010   100   002   000    Old_age   Offline      -       3
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
ゼロにはなりませんでしたが、3 に減りました。
単体で使うのは危険ですが、経験上 ZFS の raid 領域ならまだ使えると思えるので、実際に組み込みました。
[root@hoge ~]# zpool status tankQ
  pool: tankQ
 state: ONLINE
  scan: resilvered 104K in 0h0m with 0 errors on Thu Oct 18 17:36:46 2018
config:

        NAME        STATE     READ WRITE CKSUM
        tankQ       ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            tankQf  ONLINE       0     0     0
            tankQk  ONLINE       0     0     0
            tankQe  ONLINE       0     0     0
            tankQc  ONLINE       0     0     0

errors: No known data errors
ZFS としてエラーのない状態になりました。zpool scrub でもエラーでなくなりました。なお、この tankQ では、各ディスクを LUKS で暗号化した上で使用しています。

以下、その他の初期確認データです。
[root@hoge ~]# hdparm -i /dev/sdk

/dev/sdk:

 Model=ST31000340NS, FwRev=SN06, SerialNo=9xxxxxxH
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=1953525168
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-4,5,6,7

 * signifies the current active mode

[root@hoge ~]# hdparm -I /dev/sdk

/dev/sdk:

ATA device, with non-removable media
        Model Number:       ST31000340NS                            
        Serial Number:      9xxxxxxH
        Firmware Revision:  SN06    
        Transport:          Serial
Standards:
        Used: unknown (minor revision code 0x0029) 
        Supported: 8 7 6 5 
        Likely used: 8
Configuration:
        Logical         max     current
        cylinders       16383   16383
        heads           16      16
        sectors/track   63      63
        --
        CHS current addressable sectors:   16514064
        LBA    user addressable sectors:  268435455
        LBA48  user addressable sectors: 1953525168
        Logical/Physical Sector size:           512 bytes
        device size with M = 1024*1024:      953869 MBytes
        device size with M = 1000*1000:     1000204 MBytes (1000 GB)
        cache/buffer size  = unknown
        Nominal Media Rotation Rate: 7200
Capabilities:
        LBA, IORDY(can be disabled)
        Queue depth: 32
        Standby timer values: spec'd by Standard, no device specific minimum
        R/W multiple sector transfer: Max = 16  Current = ?
        Recommended acoustic management value: 254, current value: 0
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4 
             Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
        Enabled Supported:
           *    SMART feature set
                Security Mode feature set
           *    Power Management feature set
           *    Write cache
           *    Look-ahead
           *    Host Protected Area feature set
           *    WRITE_BUFFER command
           *    READ_BUFFER command
           *    DOWNLOAD_MICROCODE
                SET_MAX security extension
           *    48-bit Address feature set
           *    Device Configuration Overlay feature set
           *    Mandatory FLUSH_CACHE
           *    FLUSH_CACHE_EXT
           *    SMART error logging
           *    SMART self-test
           *    General Purpose Logging feature set
           *    64-bit World wide name
                Write-Read-Verify feature set
           *    WRITE_UNCORRECTABLE_EXT command
           *    {READ,WRITE}_DMA_EXT_GPL commands
           *    Segmented DOWNLOAD_MICROCODE
           *    Gen1 signaling speed (1.5Gb/s)
           *    Gen2 signaling speed (3.0Gb/s)
           *    Native Command Queueing (NCQ)
           *    Phy event counters
           *    Software settings preservation
           *    SMART Command Transport (SCT) feature set
           *    SCT Write Same (AC2)
           *    SCT Error Recovery Control (AC3)
           *    SCT Features Control (AC4)
           *    SCT Data Tables (AC5)
                unknown 206[12] (vendor specific)
Security: 
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
                supported: enhanced erase
        192min for SECURITY ERASE UNIT. 192min for ENHANCED SECURITY ERASE UNIT. 
Logical Unit WWN Device Identifier: 5000c500yyyyyyy9
        NAA             : 5
        IEEE OUI        : 000c50
        Unique ID       : 0yyyyyyy9
Checksum: correct
smartctl 5.43 2016-09-28 r4347 [x86_64-linux-2.6.32-754.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda ES.2
Device Model:     ST31000340NS
Serial Number:    9xxxxxxH
LU WWN Device Id: 5 000c50 0yyyyyyy9
Firmware Version: SN06
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Thu Oct 18 17:49:17 2018 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever 
                                        been run.
Total time to complete Offline 
data collection:                (  625) seconds.
Offline data collection
capabilities:                    (0x7b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine 
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 225) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x103d) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   060   060   044    Pre-fail  Always       -       205654349
  3 Spin_Up_Time            0x0003   098   091   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       128
  5 Reallocated_Sector_Ct   0x0033   099   099   036    Pre-fail  Always       -       39
  7 Seek_Error_Rate         0x000f   066   060   030    Pre-fail  Always       -       4299157087
  9 Power_On_Hours          0x0032   088   088   000    Old_age   Always       -       11030
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       1
 12 Power_Cycle_Count       0x0032   099   037   020    Old_age   Always       -       1414
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   024   024   000    Old_age   Always       -       76
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   066   046   045    Old_age   Always       -       34 (Min/Max 31/34)
194 Temperature_Celsius     0x0022   034   054   000    Old_age   Always       -       34 (0 24 0 0 0)
195 Hardware_ECC_Recovered  0x001a   052   004   000    Old_age   Always       -       205654349
197 Current_Pending_Sector  0x0012   100   002   000    Old_age   Always       -       3
198 Offline_Uncorrectable   0x0010   100   002   000    Old_age   Offline      -       3
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

SMART Error Log Version: 1
ATA Error Count: 119 (device log contains only the most recent five errors)
        CR = Command Register [HEX]
        FR = Features Register [HEX]
        SC = Sector Count Register [HEX]
        SN = Sector Number Register [HEX]
        CL = Cylinder Low Register [HEX]
        CH = Cylinder High Register [HEX]
        DH = Device/Head Register [HEX]
        DC = Device Command Register [HEX]
        ER = Error register [HEX]
        ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 119 occurred at disk power-on lifetime: 11004 hours (458 days + 12 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 fd 25 6c 00  Error: UNC at LBA = 0x006c25fd = 7087613

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 00 e0 b0 26 6c 40 00   7d+05:46:35.674  READ FPDMA QUEUED
  60 00 e0 d0 25 6c 40 00   7d+05:46:35.669  READ FPDMA QUEUED
  60 00 f0 d8 24 6c 40 00   7d+05:46:35.669  READ FPDMA QUEUED
  60 00 28 78 25 6c 40 00   7d+05:46:35.664  READ FPDMA QUEUED
  60 00 30 a8 24 6c 40 00   7d+05:46:35.663  READ FPDMA QUEUED

Error 118 occurred at disk power-on lifetime: 10830 hours (451 days + 6 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  04 71 04 9d 00 32 40  Device Fault; Error: ABRT 4 sectors at LBA = 0x0032009d = 3276957

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 d0 e1 7d 40 00      00:15:51.654  READ DMA EXT
  25 00 08 d0 e1 7d 40 00      00:15:51.654  READ DMA EXT
  25 00 08 d0 e1 7d 40 00      00:15:51.654  READ DMA EXT
  25 00 08 d0 e1 7d 40 00      00:15:51.654  READ DMA EXT
  25 00 08 d0 e1 7d 40 00      00:15:51.653  READ DMA EXT

Error 117 occurred at disk power-on lifetime: 10830 hours (451 days + 6 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  04 71 04 9d 00 32 40  Device Fault; Error: ABRT 4 sectors at LBA = 0x0032009d = 3276957

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 d0 e1 7d 40 00      00:15:51.653  READ DMA EXT
  25 00 08 c8 c5 2d 40 00      00:15:51.209  READ DMA EXT
  25 00 08 c8 c5 2d 40 00      00:15:51.209  READ DMA EXT
  25 00 08 c8 c5 2d 40 00      00:15:51.209  READ DMA EXT
  25 00 08 c8 c5 2d 40 00      00:15:51.208  READ DMA EXT

Error 116 occurred at disk power-on lifetime: 10830 hours (451 days + 6 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  04 71 04 9d 00 32 40  Device Fault; Error: ABRT 4 sectors at LBA = 0x0032009d = 3276957

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 c8 c5 2d 40 00      00:15:51.209  READ DMA EXT
  25 00 08 c8 c5 2d 40 00      00:15:51.209  READ DMA EXT
  25 00 08 c8 c5 2d 40 00      00:15:51.209  READ DMA EXT
  25 00 08 c8 c5 2d 40 00      00:15:51.208  READ DMA EXT
  25 00 08 c8 c5 2d 40 00      00:15:51.208  READ DMA EXT

Error 115 occurred at disk power-on lifetime: 10830 hours (451 days + 6 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  04 71 04 9d 00 32 40  Device Fault; Error: ABRT 4 sectors at LBA = 0x0032009d = 3276957

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 c8 c5 2d 40 00      00:15:51.208  READ DMA EXT
  25 00 08 b8 c6 2d 40 00      00:15:51.081  READ DMA EXT
  25 00 08 b8 c6 2d 40 00      00:15:51.081  READ DMA EXT
  25 00 08 b8 c6 2d 40 00      00:15:51.080  READ DMA EXT
  25 00 08 b8 c6 2d 40 00      00:15:51.080  READ DMA EXT

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%     11007         -
# 2  Short offline       Completed without error       00%     11004         -
# 3  Short offline       Completed without error       00%     10953         -
# 4  Selective offline   Completed without error       00%     10837         -
# 5  Selective offline   Completed: read failure       90%     10837         1887270886
# 6  Selective offline   Completed: read failure       90%     10837         1887261750
# 7  Selective offline   Completed: read failure       90%     10836         1887217021
# 8  Selective offline   Completed: read failure       90%     10833         63511735
# 9  Selective offline   Completed: read failure       90%     10833         63502125
#10  Selective offline   Completed: read failure       90%     10833         63490659
#11  Selective offline   Completed: read failure       90%     10833         12121842
#12  Selective offline   Completed: read failure       90%     10833         12110355
#13  Selective offline   Completed: read failure       90%     10833         12098051
#14  Selective offline   Completed: read failure       90%     10833         12089280
#15  Selective offline   Completed: read failure       90%     10833         12078170
#16  Selective offline   Completed: read failure       90%     10833         12068537
#17  Selective offline   Completed: read failure       90%     10833         12059282
#18  Selective offline   Completed: read failure       90%     10833         11972284
#19  Selective offline   Completed: read failure       90%     10833         11957107
#20  Selective offline   Completed: read failure       90%     10833         11947496
#21  Selective offline   Completed: read failure       90%     10833         10545773
17 of 17 failed self-tests are outdated by newer successful extended offline self-test # 1

SMART Selective self-test log data structure revision number 1
 SPAN     MIN_LBA     MAX_LBA  CURRENT_TEST_STATUS
    1  1887270886  1953525167  Not_testing
    2           0           0  Not_testing
    3           0           0  Not_testing
    4           0           0  Not_testing
    5           0           0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
HDD は機種によってかなり挙動が異なりますが、もしこの記事を見てリフレッシュ試みる場合、Self-test log が参考になるものと思います。なお、HDD の機種によっては、Self-test log を表示できないもの (機能が実装されてない?) もあるようです。

最後に警告となりますが、ZFS または Btrfs のように、データの End-to-End チェックサムが実装されていて、なおかつ raid 構成でなければ、今回のような状態の HDD は使えないです。単体利用はもちろんダメですが、ハードウェア RAID でも使うのは危険と思いますので、くれぐれも気をつけください。HDD や OS の挙動を学習するための実験に使うならば、よいでしょうけれど。。。
わたし自身も、tankQ をプライマリなデータ領域として使ってるわけではなく、バックアップなどのセカンダリ領域 (最悪壊れても許容できる) として利用しています。OS屋のはしくれとして、Linux(CentOS6) + ZFS それに HDD の振る舞い (特にセクターエラー発生時のリカバリ動作) を体感して経験値を積みたい、というのが主な目的です。

2018年9月26日水曜日

Fedora で ThinkPad の BIOS アップデートが降ってきた


タイトルの通りですが、ThinkPad 25 で Fedora28 を使っていたら、まさかの BIOS アップデートが降ってきました。
これは、知らなかった。アップデート実行は止めておきましたが。。。

2018年8月18日土曜日

Linux 上でメモリ帯域幅をベンチマーク

Linux でメモリ帯域幅の確認(計測)を行いたいと思って調べてみると、stream というベンチマークツールが在ることを知りました。
http://www.cs.virginia.edu/stream/
ダウンロードして、gcc でコンパイルするだけで利用できます。計測結果は次のような感じ。
[root@hoge Downloads]# ./stream_c.exe 
-------------------------------------------------------------
STREAM version $Revision: 5.10 $
-------------------------------------------------------------
This system uses 8 bytes per array element.
-------------------------------------------------------------
Array size = 10000000 (elements), Offset = 0 (elements)
Memory per array = 76.3 MiB (= 0.1 GiB).
Total memory required = 228.9 MiB (= 0.2 GiB).
Each kernel will be executed 10 times.
 The *best* time for each kernel (excluding the first iteration)
 will be used to compute the reported bandwidth.
-------------------------------------------------------------
Your clock granularity/precision appears to be 1 microseconds.
Each test below will take on the order of 43741 microseconds.
   (= 43741 clock ticks)
Increase the size of the arrays if this shows that
you are not getting at least 20 clock ticks per test.
-------------------------------------------------------------
WARNING -- The above is only a rough guideline.
For best results, please be sure you know the
precision of your system timer.
-------------------------------------------------------------
Function    Best Rate MB/s  Avg time     Min time     Max time
Copy:            2966.1     0.054175     0.053943     0.054633
Scale:           2920.8     0.054945     0.054779     0.055157
Add:             3518.2     0.068352     0.068217     0.068576
Triad:           3520.2     0.072915     0.068177     0.105948
-------------------------------------------------------------
Solution Validates: avg error less than 1.000000e-13 on all three arrays
-------------------------------------------------------------
実行環境は ThinkPad X301 + CentOS6 x86_64 です。DIMM の種類は DDR3-800 です。

いろいろなマシンで計ることを考えると、標準のツールで代用できるといいので、dd を使ってページキャッシュから読み出す方法を試してみました。
[root@hoge ~]# ls -l test.file 
-rw-r--r-- 1 root root 1024000000 Aug 18 19:05 test.file    ※予め用意しておいたテスト用ファイル
[root@hoge ~]# ls -lh test.file 
-rw-r--r-- 1 root root 977M Aug 18 19:05 test.file
[root@hoge ~]# dd if=test.file of=/dev/null bs=4k
250000+0 records in
250000+0 records out
1024000000 bytes (1.0 GB) copied, 3.89807 s, 263 MB/s    ※1回目はキャッシュに載ってないのでSSDの計測になる

[root@hoge ~]# dd if=test.file of=/dev/null bs=4k
250000+0 records in
250000+0 records out
1024000000 bytes (1.0 GB) copied, 0.558606 s, 1.8 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=4k
250000+0 records in
250000+0 records out
1024000000 bytes (1.0 GB) copied, 0.492317 s, 2.1 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=4k
250000+0 records in
250000+0 records out
1024000000 bytes (1.0 GB) copied, 0.488601 s, 2.1 GB/s

[root@hoge ~]# dd if=test.file of=/dev/null bs=8k    ※以降、ブロックサイズを2倍にして、3回づつ計測
125000+0 records in
125000+0 records out
1024000000 bytes (1.0 GB) copied, 0.39059 s, 2.6 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=8k
125000+0 records in
125000+0 records out
1024000000 bytes (1.0 GB) copied, 0.387988 s, 2.6 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=8k
125000+0 records in
125000+0 records out
1024000000 bytes (1.0 GB) copied, 0.387874 s, 2.6 GB/s

[root@hoge ~]# dd if=test.file of=/dev/null bs=16k
62500+0 records in
62500+0 records out
1024000000 bytes (1.0 GB) copied, 0.3597 s, 2.8 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=16k
62500+0 records in
62500+0 records out
1024000000 bytes (1.0 GB) copied, 0.359784 s, 2.8 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=16k
62500+0 records in
62500+0 records out
1024000000 bytes (1.0 GB) copied, 0.358306 s, 2.9 GB/s

[root@hoge ~]# dd if=test.file of=/dev/null bs=32k
31250+0 records in
31250+0 records out
1024000000 bytes (1.0 GB) copied, 0.343135 s, 3.0 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=32k
31250+0 records in
31250+0 records out
1024000000 bytes (1.0 GB) copied, 0.342479 s, 3.0 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=32k
31250+0 records in
31250+0 records out
1024000000 bytes (1.0 GB) copied, 0.342495 s, 3.0 GB/s

[root@hoge ~]# dd if=test.file of=/dev/null bs=64k
15625+0 records in
15625+0 records out
1024000000 bytes (1.0 GB) copied, 0.32722 s, 3.1 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=64k
15625+0 records in
15625+0 records out
1024000000 bytes (1.0 GB) copied, 0.327119 s, 3.1 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=64k
15625+0 records in
15625+0 records out
1024000000 bytes (1.0 GB) copied, 0.328853 s, 3.1 GB/s

[root@hoge ~]# dd if=test.file of=/dev/null bs=128k
7812+1 records in
7812+1 records out
1024000000 bytes (1.0 GB) copied, 0.319119 s, 3.2 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=128k
7812+1 records in
7812+1 records out
1024000000 bytes (1.0 GB) copied, 0.320496 s, 3.2 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=128k
7812+1 records in
7812+1 records out
1024000000 bytes (1.0 GB) copied, 0.325546 s, 3.1 GB/s

[root@hoge ~]# dd if=test.file of=/dev/null bs=256k
3906+1 records in
3906+1 records out
1024000000 bytes (1.0 GB) copied, 0.314302 s, 3.3 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=256k
3906+1 records in
3906+1 records out
1024000000 bytes (1.0 GB) copied, 0.315943 s, 3.2 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=256k
3906+1 records in
3906+1 records out
1024000000 bytes (1.0 GB) copied, 0.316061 s, 3.2 GB/s

[root@hoge ~]# dd if=test.file of=/dev/null bs=512k
1953+1 records in
1953+1 records out
1024000000 bytes (1.0 GB) copied, 0.313515 s, 3.3 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=512k
1953+1 records in
1953+1 records out
1024000000 bytes (1.0 GB) copied, 0.315126 s, 3.2 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=512k
1953+1 records in
1953+1 records out
1024000000 bytes (1.0 GB) copied, 0.316339 s, 3.2 GB/s

[root@hoge ~]# dd if=test.file of=/dev/null bs=1024k
976+1 records in
976+1 records out
1024000000 bytes (1.0 GB) copied, 0.343852 s, 3.0 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=1024k
976+1 records in
976+1 records out
1024000000 bytes (1.0 GB) copied, 0.338554 s, 3.0 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=1024k
976+1 records in
976+1 records out
1024000000 bytes (1.0 GB) copied, 0.342826 s, 3.0 GB/s

[root@hoge ~]# dd if=test.file of=/dev/null bs=2048k
488+1 records in
488+1 records out
1024000000 bytes (1.0 GB) copied, 0.674414 s, 1.5 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=2048k
488+1 records in
488+1 records out
1024000000 bytes (1.0 GB) copied, 0.68936 s, 1.5 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=2048k
488+1 records in
488+1 records out
1024000000 bytes (1.0 GB) copied, 0.677181 s, 1.5 GB/s

[root@hoge ~]# dd if=test.file of=/dev/null bs=4096k
244+1 records in
244+1 records out
1024000000 bytes (1.0 GB) copied, 0.773668 s, 1.3 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=4096k
244+1 records in
244+1 records out
1024000000 bytes (1.0 GB) copied, 0.76228 s, 1.3 GB/s
[root@hoge ~]# dd if=test.file of=/dev/null bs=4096k
244+1 records in
244+1 records out
1024000000 bytes (1.0 GB) copied, 0.754367 s, 1.4 GB/s
[root@hoge ~]# 
このように、ブロックサイズ (bs) が小さすぎてはダメですが、かと言って、大きすぎてもダメでした。実験は大事ですね。CPU のキャッシュの影響かな? おそらくは
この方法だと、read システムコールの延長のカーネル内コードで、ページキャッシュ上のデータが、ユーザ空間にコピーされる動きになるはずです。/dev/null への write システムコールが余計ですが、カーネル内では何もせず(コピー処理などはなし)にリターンするので、ほぼ無視できるかと思います。/dev/null に対応するコードは、drivers/char/mem.c の中です。

別のやり方(/dev/zero を読み出す方法)だと、次のように stream と乖離した値が見えます。
[root@hoge ~]# dd if=/dev/zero of=/dev/null bs=512k count=10000
10000+0 records in
10000+0 records out
5242880000 bytes (5.2 GB) copied, 0.738394 s, 7.1 GB/s
[root@hoge ~]# 
/dev/zero を read する際のカーネル内コードは、次のとおりです。メモリ間のコピーではなく、レジスタ上の値(ゼロ)をメモリへ転送(ストア)する繰り返し処理になってます。
    677 static ssize_t read_zero(struct file * file, char __user * buf,
    678                          size_t count, loff_t *ppos)
    679 {
    680         size_t written;
    681 
    682         if (!count)
    683                 return 0;
    684 
    685         if (!access_ok(VERIFY_WRITE, buf, count))
    686                 return -EFAULT;
    687 
    688         written = 0;
    689         while (count) {
    690                 unsigned long unwritten;
    691                 size_t chunk = count;
    692 
    693                 if (chunk > PAGE_SIZE)
    694                         chunk = PAGE_SIZE;      /* Just for latency reasons */
    695                 unwritten = __clear_user(buf, chunk);
    696                 written += chunk - unwritten;
    697                 if (unwritten)
    698                         break;
    699                 if (signal_pending(current))
    700                         return written ? written : -ERESTARTSYS;
    701                 buf += chunk;
    702                 count -= chunk;
    703                 cond_resched();
    704         }
    705         return written ? written : -EFAULT;
    706 }
"drivers/char/mem.c"

     60 /*
     61  * Zero Userspace
     62  */
     63 
     64 unsigned long __clear_user(void __user *addr, unsigned long size)
     65 {
     66         long __d0;
     67         might_fault();
     68         /* no memory constraint because it doesn't change any memory gcc knows
     69            about */
     70         asm volatile(
     71                 "       testq  %[size8],%[size8]\n"
     72                 "       jz     4f\n"
     73                 "0:     movq %[zero],(%[dst])\n"
     74                 "       addq   %[eight],%[dst]\n"
     75                 "       decl %%ecx ; jnz   0b\n"
     76                 "4:     movq  %[size1],%%rcx\n"
     77                 "       testl %%ecx,%%ecx\n"
     78                 "       jz     2f\n"
     79                 "1:     movb   %b[zero],(%[dst])\n"
     80                 "       incq   %[dst]\n"
     81                 "       decl %%ecx ; jnz  1b\n"
     82                 "2:\n"
     83                 ".section .fixup,\"ax\"\n"
     84                 "3:     lea 0(%[size1],%[size8],8),%[size8]\n"
     85                 "       jmp 2b\n"
     86                 ".previous\n"
     87                 _ASM_EXTABLE(0b,3b)
     88                 _ASM_EXTABLE(1b,2b)
     89                 : [size8] "=&c"(size), [dst] "=&D" (__d0)
     90                 : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr),
     91                   [zero] "r" (0UL), [eight] "r" (8UL));
     92         return size;
     93 }
     94 EXPORT_SYMBOL(__clear_user);
"arch/x86/lib/usercopy_64.c"

なお、MB/s の MB は、stream も dd も 1000*1000 単位で計算されています。GB/s も同様。1024*1024単位ではないか?と迷うことがあるので、備忘録。

2018年8月4日土曜日

7z で .lzh を解凍する

姫野ベンチ を使おうとして、ソースをダウンロードしたのですが、どういう意図なのか zip の中に lzh ファイルが入っているという二重包装状態でした。
[root@hoge tmp]# ls -l *.zip
-rw-r--r--. 1 root root 2729  8月  3 00:01 cc_himenobmtxp_m.zip
[root@hoge tmp]# unzip cc_himenobmtxp_m.zip 
Archive:  cc_himenobmtxp_m.zip
 extracting: cc_himenobmtxp_m.lzh    
[root@hoge tmp]# ls -l cc_hime*
-rw-r--r--. 1 root root 2555  6月 10  2015 cc_himenobmtxp_m.lzh
-rw-r--r--. 1 root root 2729  8月  3 00:01 cc_himenobmtxp_m.zip
lzh なんて久しぶりに見ました。解凍は lha でできるとは思いましたが、いまどき lha なんて収録されてませんでした。環境は Fedora です。
[root@hoge tmp]# dnf install lha
メタデータの期限切れの確認は、0:52:24 時間前の 2018年08月04日 07時58分59秒 に実施しました。
一致した引数がありません: lha
エラー: 一致するものが見つかりません
他に頭に浮かんだのは 7z コマンド。しかし、man を見ても lzh の記述はなく、ダメ元で試してみたのですが、解凍できました。
[root@hoge tmp]# 7z x cc_himenobmtxp_m.lzh 

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=ja_JP.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz (806E9),ASM,AES-NI)

Scanning the drive for archives:
1 file, 2555 bytes (3 KiB)

Extracting archive: cc_himenobmtxp_m.lzh
--
Path = cc_himenobmtxp_m.lzh
Type = Lzh
Physical Size = 2555

Everything is Ok

Files: 2
Size:       7237
Compressed: 2555
[root@hoge tmp]# ls -l *.[ch] Makefile 
-rw-r--r--. 1 root root  237  2月 21  2002 Makefile
-rw-r--r--. 1 root root 7000  2月 21  2002 himenoBMTxps.c
以上、自分と誰かのために備忘録でした。

2018年8月3日金曜日

likwid で 姫野ベンチ を計測してみた

likwid 、姫野ベンチ の導入は make するだけなので、省略します。
[root@hoge Downloads]# likwid-perfctr -C 1 -g FLOPS_SP ./bmt 
--------------------------------------------------------------------------------
CPU name: Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
CPU type: Intel Kabylake processor
CPU clock: 2.90 GHz
--------------------------------------------------------------------------------
mimax = 129 mjmax = 129 mkmax = 257
imax = 128 jmax = 128 kmax =256
 Start rehearsal measurement process.
 Measure the performance in 3 times.

 MFLOPS: 5008.406795 time(s): 0.082125 1.733593e-03

 Now, start the actual measurement process.
 The loop will be excuted in 2191 times
 This will take about one minute.
 Wait for a while

 Loop executed for 2191 times
 Gosa : 4.477886e-04 
 MFLOPS measured : 6004.316730 cpu : 50.030231
 Score based on Pentium III 600MHz : 73.223375
--------------------------------------------------------------------------------
Group 1: FLOPS_SP
+------------------------------------------+---------+--------------+
|                   Event                  | Counter |    Core 1    |
+------------------------------------------+---------+--------------+
|             INSTR_RETIRED_ANY            |  FIXC0  | 244033624741 |
|           CPU_CLK_UNHALTED_CORE          |  FIXC1  | 173945548078 |
|           CPU_CLK_UNHALTED_REF           |  FIXC2  | 144661450175 |
| FP_ARITH_INST_RETIRED_128B_PACKED_SINGLE |   PMC0  |  72415611576 |
|    FP_ARITH_INST_RETIRED_SCALAR_SINGLE   |   PMC1  |  11146222208 |
| FP_ARITH_INST_RETIRED_256B_PACKED_SINGLE |   PMC2  |            0 |
+------------------------------------------+---------+--------------+

+----------------------+-----------+
|        Metric        |   Core 1  |
+----------------------+-----------+
|  Runtime (RDTSC) [s] |   50.2231 |
| Runtime unhalted [s] |   59.9028 |
|      Clock [MHz]     | 3491.6156 |
|          CPI         |    0.7128 |
|      SP MFLOP/s      | 5989.4533 |
|    AVX SP MFLOP/s    |         0 |
|    Packed MUOPS/s    | 1441.8797 |
|    Scalar MUOPS/s    |  221.9344 |
|  Vectorization ratio |   86.6611 |
+----------------------+-----------+
このように、ちゃんと近い値が出ました。-g オプションで指定する group name は、-a オプションで表示できます。
[root@hoge Downloads]# likwid-perfctr -a
 Group name Description
--------------------------------------------------------------------------------
       DATA Load to store ratio
 UOPS_ISSUE UOPs issueing
  TLB_INSTR L1 Instruction TLB miss rate/ratio
   TLB_DATA L2 data TLB miss rate/ratio
  FLOPS_AVX Packed AVX MFLOP/s
UOPS_RETIRE UOPs retirement
     BRANCH Branch prediction miss rate/ratio
  UOPS_EXEC UOPs execution
     ICACHE Instruction cache miss rate/ratio
       UOPS UOPs execution info
         L3 L3 cache bandwidth in MBytes/s
   FLOPS_SP Single Precision MFLOP/s
    L2CACHE L2 cache miss rate/ratio
   RECOVERY Recovery duration
    L3CACHE L3 cache miss rate/ratio
         L2 L2 cache bandwidth in MBytes/s
CYCLE_ACTIVITY Cycle Activities
     ENERGY Power and Energy consumption
FALSE_SHARE False sharing
      CLOCK Power and Energy consumption
   FLOPS_DP Double Precision MFLOP/s
なお、姫野ベンチ(static M)のソースを grep するとわかりますが、float で計算しているので、FLOPS_DP ではなく FLOPS_SP を使いました。
[root@hoge Downloads]# grep -w float himenoBMTxps.c 
float jacobi();
static float  p[MIMAX][MJMAX][MKMAX];
static float  a[4][MIMAX][MJMAX][MKMAX],
static float  bnd[MIMAX][MJMAX][MKMAX];
static float  wrk1[MIMAX][MJMAX][MKMAX],
static float omega;
  float  gosa;
        p[i][j][k]=(float)(i*i)/(float)((imax-1)*(imax-1));
float
  float gosa, s0, ss;

2018年6月20日水曜日

CentOS7 の黒いコンソール画面で Caps Lock の LED が光らない

会社のメインマシン用に、東プレの省スペースキーボード R2TLA-JP4-BK を新調し、試し打ちのために、CentOS7 が動作しているマシンに接続しました。
これまでは東プレの旧型省スペースタイプを使っていましたが、新型は今までになかった LED が搭載されており、さっそく Caps Lock で LED 点灯を確かめようとしたのですが。。。
点灯せず(あれ?)。キーを押すと大文字が入力されるので Caps Lock がちゃんと反応はしているようなのですが、なぜか LED が光りませんでした。

これって初期不良?サポートに聞くのは手間だなあなどと思ったのですが、問い合わせる前の切り分けに、別の LED 付フルキーボードを同じマシンに接続してみました。
これで LED が光るようなら、新キーボードの初期不良確定なのですが、なんとそのフルキーボードの LED も光らずでした。フルキーボードは別の CentOS7 マシンに接続していて、そちらでは光ってましたので、マシン環境の違いということになりました。

設定の差分を調べたところ、カーネルコマンドライン vconsole.keymap=jp106 の有無が違ってました。LED が光らなかったマシンにこの設定を入れたところ、コンソール画面で Caps Lock の LED が反応するようになりました。あーよかった。
[root@hoge ~]# vi /etc/default/grub 
...
GRUB_CMDLINE_LINUX="crashkernel=auto vconsole.keymap=jp106"
...
[root@hoge ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@hoge ~]# shutdown -r now
なお、あとで試したら vconsole.keymap=jp106 を指定していなくても、GNOME デスクトップのターミナル等であれば、LED が点灯するようです。
Caps Lock キーなんて、まず使わないわけですが、間違って押した時に LED が光ってすぐ分かるのは利点かなと思います。

いろいろな種類がある東プレキーボードですが、静音タイプは自分としては「何か違う感」があったのと、キー荷重ALL45gが好みなので、R2TLA-JP4-BK(人気薄?)を選択しました。以前、ALL30gのキーボードを使っていたこともあるのですが、自分には軽過ぎました。R2TLA-JP4-BK は、キー刻印が見づらい(黒色に墨)ですが、まったく問題なしです。増田忠先生の練習法は、すばらしいです。かれこれ30年近く前、「ワープロ・パソコンのためのらくらくキーボード練習帳―ブラインド・タッチからワープロ検定まで〈1 ローマ字入力編〉」という本で練習したおかげで、ほとんどキーを見なくても打てるようになりました。おもえば、ブラインドタッチになってから、キーボードにこだわりだしたのでした。速く打てるようになったため、良いキーボードでないと手が痛くて耐えられなくなり。。。

R2TLA-JP4-BK の打ち心地は、かなり気に入りました。ネット上で不評な右上部分のデザインも、色合い(非静音タイプは銀色)のせいか、それほど気になりませんでした。APC は、ちょっと試してみた限りでは、違いが知覚できず。とりあえずは、ノーマル設定(キースイッチ反応位置2.2mm)で利用中です。キーストロークを浅めにできるスペーサーまで付属しますが、キートップを全部とるのが手間なので、試していません。


写真では分かり難いですが、BIOS 設定で電源投入時に Num Lock を on にする設定により、Num Lock の LED を緑色に点灯させています。このキーボードは LED の色も選べるし、輝度を調整できたりもします。写真は輝度を一番低くした状態です。
黄色い S キーは、これまで使っていた NG02Y0 から移植したものです。互換性のない最下段以外を全部移植しようかと思ってましたが、R2TLA-JP4-BK それ自体の美しい佇まいも捨て難く感じ、1ポイントアクセントに留めました。


以上、vconsole.keymap についての備忘録のつもりが、ついつい RealForce のレビューになってしまいました。

2018年6月8日金曜日

Linux の smartctl で NVMe の温度などが見えた

ThinkPad 25 で、初めての NVMe を使い始めて約8ヵ月。
smartctl は SATA の S.M.A.R.T. を採ってくるツールだから、NVMe には使えないと思いこんでいましたが、本日 Fedora28 を使っていて、最新の smartctl ならば、NVMe 向けの拡張が実装済みではないか?っと man を nvme でサーチしたら記述がありました。そして、実際使えました。CentOS7 に収録の smartctl でも使えるようです。

下記は、CentOS7 上での試し打ち結果です。ちょっとした注意点(コツ)があり、/dev/nvme0n1(ネームスペース1)のほうではなく、/dev/nvme0 を指定したほうがよいです。そうしないと、肝心の情報(後半に出力される温度や消耗度を表すデータ)が出力されません。
[root@hoge ~]# smartctl -a /dev/nvme0
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-3.10.0-862.3.2.el7.x86_64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       LENSE20512GMSP34MEAT2TA
Serial Number:                      114406730xxxx
Firmware Version:                   2.3.8341
PCI Vendor/Subsystem ID:            0x17aa
IEEE OUI Identifier:                0xa03299
Controller ID:                      1
Number of Namespaces:               1
Namespace 1 Size/Capacity:          512,110,190,592 [512 GB]
Namespace 1 Utilization:            0
Namespace 1 Formatted LBA Size:     512
Local Time is:                      Fri Jun  8 11:05:50 2018 JST
Firmware Updates (0x02):            1 Slot
Optional Admin Commands (0x0007):   Security Format Frmw_DL
Optional NVM Commands (0x0016):     Wr_Unc DS_Mngmt Sav/Sel_Feat
Maximum Data Transfer Size:         32 Pages
Warning  Comp. Temp. Threshold:     70 Celsius

Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     6.50W       -        -    0  0  0  0        0       0
 1 +     4.60W       -        -    1  1  1  1        5       5
 2 +     3.90W       -        -    2  2  2  2        5       5
 3 -   0.1000W       -        -    3  3  3  3    35000    6000
 4 -   0.0100W       -        -    4  4  4  4    35000    6000

Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 -     512       0         0

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02, NSID 0xffffffff)
Critical Warning:                   0x00
Temperature:                        38 Celsius
Available Spare:                    100%
Available Spare Threshold:          3%
Percentage Used:                    0%
Data Units Read:                    5,199,478 [2.66 TB]
Data Units Written:                 3,861,451 [1.97 TB]
Host Read Commands:                 91,143,836
Host Write Commands:                85,539,172
Controller Busy Time:               256
Power Cycles:                       485
Power On Hours:                     2,504
Unsafe Shutdowns:                   146
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    0
Temperature Sensor 1:               44 Celsius
Temperature Sensor 2:               38 Celsius
Temperature Sensor 3:               35 Celsius

Error Information (NVMe Log 0x01, max 4 entries)
No Errors Logged

[root@hoge ~]# 
なお、同様のデータは nvme コマンドでも出せます。でも、SATA ディスクを扱うことが多くて、現状、NVMe はこの一台しか使っていないため、今のところ覚えられず。smartctl なら、ほぼ SATA と同様なので、ありがたい。
[root@hoge ~]# nvme smart-log /dev/nvme0
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                    : 0
temperature                         : 39 C
available_spare                     : 100%
available_spare_threshold           : 3%
percentage_used                     : 0%
data_units_read                     : 5,199,509
data_units_written                  : 3,861,775
host_read_commands                  : 91,144,551
host_write_commands                 : 85,546,279
controller_busy_time                : 256
power_cycles                        : 485
power_on_hours                      : 2,504
unsafe_shutdowns                    : 146
media_errors                        : 0
num_err_log_entries                 : 0
Warning Temperature Time            : 0
Critical Composite Temperature Time : 0
Temperature Sensor 1                : 44 C
Temperature Sensor 2                : 39 C
Temperature Sensor 3                : 36 C
Thermal Management T1 Trans Count   : 0
Thermal Management T2 Trans Count   : 0
Thermal Management T1 Total Time    : 0
Thermal Management T2 Total Time    : 0

2018年4月21日土曜日

CentOS7 の GNOME デスクトップで Ctrl+Alt+Delete を無効化する

CentOS7 の GNOME デスクトップで、Ctrl+Alt+Delete するとダイアログが表示され、そのまま 60秒 操作しないと自動的にシャットダウンされてしまいます。まったく余計なお世話、と思ってしまいます。そんな振る舞い、誰が嬉しいの?

次のコマンドで、このダイアログを表示しないようにできるようです。
[root@hoge ~]# gsettings get org.gnome.settings-daemon.plugins.media-keys logout 
'<Control><Alt>Delete'
[root@hoge ~]# gsettings set org.gnome.settings-daemon.plugins.media-keys logout ''
[root@hoge ~]# gsettings get org.gnome.settings-daemon.plugins.media-keys logout 
''
あまりないとは思いますが、元に戻すには reset で出来るようです。
[root@hoge ~]# gsettings reset org.gnome.settings-daemon.plugins.media-keys logout 
[root@hoge ~]# gsettings get org.gnome.settings-daemon.plugins.media-keys logout 
'<Control><Alt>Delete'
ただし、抑止のほうは、即座に反映されるようですが、reset のほうは一旦ログアウト/再ログインしないと反映されないようです。

2018-04-22追記
CentOS6 の場合は、gconftool-2 を使えばよいようです。
[root@hoge ~]# gconftool-2 --get /apps/gnome_settings_daemon/keybindings/power
<Control><Alt>Delete
[root@hoge ~]# gconftool-2 --type string --set /apps/gnome_settings_daemon/keybindings/power ''
[root@hoge ~]# gconftool-2 --get /apps/gnome_settings_daemon/keybindings/power

[root@hoge ~]# 
戻す場合は、次の通りです。reset ではなくて、unset です。
[root@hoge ~]# gconftool-2 --get /apps/gnome_settings_daemon/keybindings/power

[root@hoge ~]# gconftool-2 --unset /apps/gnome_settings_daemon/keybindings/power
[root@hoge ~]# gconftool-2 --get /apps/gnome_settings_daemon/keybindings/power
<Control><Alt>Delete
[root@hoge ~]# 

2018年3月14日水曜日

SSD に対する定期的な fstrim 実行

CentOS 7 で、SSD の性能維持のため、定期的に fstrim を実行したいと思い、安直に cron を書きそうでしたが、その前に調べて見たところ、systemd が予め用意してくれているサービスがあることを知りました。
[root@hoge ~]# cat /usr/lib/systemd/system/fstrim.timer 
[Unit]
Description=Discard unused blocks once a week
Documentation=man:fstrim

[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true

[Install]
WantedBy=multi-user.target
これを systemctl enable fstrim.timer すればよいです。なるほど、systemd には cron ちっくな機能も盛り込まれてるのですね。

2018年3月10日土曜日

双子素数の探査

双子素数に興味を持ち、ちょっと一筆。遅いですが手っ取り早くbash+factorコマンドで書いてみました。
#!/bin/bash
LANG=C
declare -i n
declare -i m
declare -a a
declare -a b
for ((n=1001;n<10000;n+=2))
do
    a=(`factor $n`)
    if [ ${a[1]} = $n ] ; then
        let m=n+2
        b=(`factor $m`)
        if [ ${b[1]} = $m ] ; then
            echo $n $m
        fi
    fi
done
4桁の双子素数を表示します。以下、実行結果です。170組もあるとは思いませんでした。意外と多かった。
[root@hoge ~]# time ./twinprimes 
1019 1021
1031 1033
1049 1051
1061 1063
1091 1093
1151 1153
1229 1231
1277 1279
1289 1291
1301 1303
1319 1321
1427 1429
1451 1453
1481 1483
1487 1489
1607 1609
1619 1621
1667 1669
1697 1699
1721 1723
1787 1789
1871 1873
1877 1879
1931 1933
1949 1951
1997 1999
2027 2029
2081 2083
2087 2089
2111 2113
2129 2131
2141 2143
2237 2239
2267 2269
2309 2311
2339 2341
2381 2383
2549 2551
2591 2593
2657 2659
2687 2689
2711 2713
2729 2731
2789 2791
2801 2803
2969 2971
2999 3001
3119 3121
3167 3169
3251 3253
3257 3259
3299 3301
3329 3331
3359 3361
3371 3373
3389 3391
3461 3463
3467 3469
3527 3529
3539 3541
3557 3559
3581 3583
3671 3673
3767 3769
3821 3823
3851 3853
3917 3919
3929 3931
4001 4003
4019 4021
4049 4051
4091 4093
4127 4129
4157 4159
4217 4219
4229 4231
4241 4243
4259 4261
4271 4273
4337 4339
4421 4423
4481 4483
4517 4519
4547 4549
4637 4639
4649 4651
4721 4723
4787 4789
4799 4801
4931 4933
4967 4969
5009 5011
5021 5023
5099 5101
5231 5233
5279 5281
5417 5419
5441 5443
5477 5479
5501 5503
5519 5521
5639 5641
5651 5653
5657 5659
5741 5743
5849 5851
5867 5869
5879 5881
6089 6091
6131 6133
6197 6199
6269 6271
6299 6301
6359 6361
6449 6451
6551 6553
6569 6571
6659 6661
6689 6691
6701 6703
6761 6763
6779 6781
6791 6793
6827 6829
6869 6871
6947 6949
6959 6961
7127 7129
7211 7213
7307 7309
7331 7333
7349 7351
7457 7459
7487 7489
7547 7549
7559 7561
7589 7591
7757 7759
7877 7879
7949 7951
8009 8011
8087 8089
8219 8221
8231 8233
8291 8293
8387 8389
8429 8431
8537 8539
8597 8599
8627 8629
8819 8821
8837 8839
8861 8863
8969 8971
8999 9001
9011 9013
9041 9043
9239 9241
9281 9283
9341 9343
9419 9421
9431 9433
9437 9439
9461 9463
9629 9631
9677 9679
9719 9721
9767 9769
9857 9859
9929 9931

real 0m4.132s
user 0m2.390s
sys 0m1.903s
[root@hoge ~]#  ./twinprimes | wc -l
170

2018年1月26日金曜日

ntpd で時刻補正がうまく行かない場合の対症療法

新しく ThinkPad 25 で、CentOS 7 を使い始めたのですが、ntpd での時刻補正がうまくいかず、時刻がどんどんずれていく状態でした。
要因としては、新品マシンで drift 値 (/var/lib/ntpd/drift に格納される) が定まっていない点、WiFi 環境や高度な省電力の影響 など想像しましたが、想像したところで原因特定は難しいし、そこまで時間を割いてもいられないので、よくある対処療法 (maxpoll 設定) を行いました。

まず、どうなっていたかというと、「frequency error -561 PPM exceeds tolerance 500 PPM」というメッセージが出続けていました。
[root@hoge act27m48_1]# grep ntpd messages-20171225 
Dec 19 06:48:27 hoge ntpd[31716]: ntpd 4.2.6p5@1.2349-o Wed Apr 12 21:24:06 UTC 2017 (1)
Dec 19 06:48:27 hoge ntpd[31717]: proto: precision = 0.046 usec
Dec 19 06:48:27 hoge ntpd[31717]: 0.0.0.0 c01d 0d kern kernel time sync enabled
Dec 19 06:48:27 hoge ntpd[31717]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen and drop on 1 v6wildcard :: UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen normally on 2 lo 127.0.0.1 UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen normally on 3 wlp4s0 192.168.1.41 UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen normally on 4 virbr0 192.168.122.1 UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen normally on 5 lo ::1 UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listen normally on 6 wlp4s0 fe80::e1c7:557d:897c:9baf UDP 123
Dec 19 06:48:27 hoge ntpd[31717]: Listening on routing socket on fd #23 for interface updates
Dec 19 06:48:28 hoge ntpd[31717]: 0.0.0.0 c016 06 restart
Dec 19 06:48:28 hoge ntpd[31717]: 0.0.0.0 c012 02 freq_set ntpd 0.000 PPM
Dec 19 06:48:28 hoge ntpd[31717]: 0.0.0.0 c011 01 freq_not_set
Dec 19 06:48:34 hoge ntpd[31717]: 0.0.0.0 c614 04 freq_mode
Dec 19 07:11:03 hoge ntpd[31717]: 0.0.0.0 0612 02 freq_set ntpd -3983.969 PPM
Dec 19 07:11:03 hoge ntpd[31717]: 0.0.0.0 0615 05 clock_sync
Dec 19 07:11:03 hoge ntpd[31717]: frequency error -3984 PPM exceeds tolerance 500 PPM
Dec 19 07:13:21 hoge ntpd[31717]: frequency error -561 PPM exceeds tolerance 500 PPM
Dec 19 07:16:41 hoge ntpd[31717]: frequency error -586 PPM exceeds tolerance 500 PPM
Dec 19 07:22:25 hoge ntpd[31717]: frequency error -646 PPM exceeds tolerance 500 PPM
Dec 19 07:24:35 hoge ntpd[31717]: frequency error -554 PPM exceeds tolerance 500 PPM
Dec 19 07:37:56 hoge ntpd[31717]: frequency error -578 PPM exceeds tolerance 500 PPM
Dec 19 07:46:26 hoge ntpd[31717]: frequency error -550 PPM exceeds tolerance 500 PPM
Dec 19 07:53:11 hoge ntpd[31717]: frequency error -537 PPM exceeds tolerance 500 PPM
Dec 19 07:53:12 hoge ntpd[31717]: frequency error -500 PPM exceeds tolerance 500 PPM
Dec 19 08:04:12 hoge ntpd[31717]: 0.0.0.0 0618 08 no_sys_peer
Dec 19 08:08:29 hoge ntpd[31717]: frequency error -577 PPM exceeds tolerance 500 PPM
Dec 19 08:28:19 hoge ntpd[31717]: frequency error -523 PPM exceeds tolerance 500 PPM
Dec 19 08:41:28 hoge ntpd[31717]: frequency error -515 PPM exceeds tolerance 500 PPM
Dec 19 08:57:00 hoge ntpd[31717]: frequency error -517 PPM exceeds tolerance 500 PPM
Dec 19 09:09:39 hoge ntpd[31717]: frequency error -513 PPM exceeds tolerance 500 PPM
Dec 19 09:16:14 hoge ntpd[31717]: frequency error -502 PPM exceeds tolerance 500 PPM
Dec 19 09:25:17 hoge ntpd[31717]: frequency error -502 PPM exceeds tolerance 500 PPM
Dec 19 09:40:57 hoge ntpd[31717]: frequency error -503 PPM exceeds tolerance 500 PPM
Dec 19 09:44:45 hoge ntpd[31717]: frequency error -501 PPM exceeds tolerance 500 PPM
Dec 19 10:08:51 hoge ntpd[31717]: frequency error -501 PPM exceeds tolerance 500 PPM
Dec 19 10:33:49 hoge ntpd[31717]: frequency error -501 PPM exceeds tolerance 500 PPM
Dec 19 10:44:29 hoge ntpd[31717]: 0.0.0.0 0628 08 no_sys_peer
Dec 20 22:24:33 hoge ntpd[31717]: ntpd exiting on signal 15
Dec 20 22:26:07 hoge ntpd[7956]: ntpd 4.2.6p5@1.2349-o Wed Apr 12 21:24:06 UTC 2017 (1)
Dec 20 22:26:07 hoge ntpd[7957]: proto: precision = 0.046 usec
Dec 20 22:26:07 hoge ntpd[7957]: 0.0.0.0 c01d 0d kern kernel time sync enabled
Dec 20 22:26:07 hoge ntpd[7957]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen and drop on 1 v6wildcard :: UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen normally on 2 lo 127.0.0.1 UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen normally on 3 wlp4s0 192.168.1.41 UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen normally on 4 virbr0 192.168.122.1 UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen normally on 5 lo ::1 UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listen normally on 6 wlp4s0 fe80::e1c7:557d:897c:9baf UDP 123
Dec 20 22:26:07 hoge ntpd[7957]: Listening on routing socket on fd #23 for interface updates
Dec 20 22:26:07 hoge ntpd[7957]: 0.0.0.0 c016 06 restart
Dec 20 22:26:07 hoge ntpd[7957]: 0.0.0.0 c012 02 freq_set ntpd 0.000 PPM
Dec 20 22:26:07 hoge ntpd[7957]: 0.0.0.0 c011 01 freq_not_set
Dec 20 22:26:15 hoge ntpd[7957]: 0.0.0.0 c614 04 freq_mode
Dec 20 22:47:32 hoge ntpd[7957]: 0.0.0.0 0612 02 freq_set ntpd 36169.073 PPM
Dec 20 22:47:32 hoge ntpd[7957]: 0.0.0.0 0615 05 clock_sync
Dec 20 22:47:32 hoge ntpd[7957]: frequency error 36169 PPM exceeds tolerance 500 PPM
Dec 20 22:54:13 hoge ntpd[7957]: frequency error 2051 PPM exceeds tolerance 500 PPM
Dec 20 22:56:29 hoge ntpd[7957]: frequency error 1025 PPM exceeds tolerance 500 PPM
Dec 20 22:59:51 hoge ntpd[7957]: frequency error 1277 PPM exceeds tolerance 500 PPM
Dec 20 23:03:11 hoge ntpd[7957]: frequency error 1269 PPM exceeds tolerance 500 PPM
Dec 20 23:04:20 hoge ntpd[7957]: frequency error 566 PPM exceeds tolerance 500 PPM
Dec 20 23:08:46 hoge ntpd[7957]: frequency error 755 PPM exceeds tolerance 500 PPM
Dec 20 23:26:10 hoge ntpd[7957]: frequency error 1495 PPM exceeds tolerance 500 PPM
Dec 20 23:35:04 hoge ntpd[7957]: frequency error 1006 PPM exceeds tolerance 500 PPM
Dec 20 23:43:43 hoge ntpd[7957]: frequency error 990 PPM exceeds tolerance 500 PPM
Dec 21 00:01:10 hoge ntpd[7957]: frequency error 1482 PPM exceeds tolerance 500 PPM
...
Dec 22 11:54:14 hoge ntpd[7957]: frequency error 510 PPM exceeds tolerance 500 PPM
Dec 22 11:55:20 hoge ntpd[7957]: frequency error 501 PPM exceeds tolerance 500 PPM
Dec 22 12:04:10 hoge ntpd[7957]: frequency error 500 PPM exceeds tolerance 500 PPM
そして、ntpq -np の定期採取データでは、次のように offset が大きくなり続けている状態でした。
[root@hoge act27m48_1]# zcat actlog/ntpq-np.7.gz | reduce_actlog -i 7200
2017-12-20 03:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 03:21:12 ==============================================================================
2017-12-20 03:21:12  157.7.208.12    133.243.238.244  2 u  803 1024  377   21.591  29171.2 1948.21
2017-12-20 03:21:12  157.7.153.56    133.243.238.244  2 u  394 1024   77   49.348  29404.9 2474.12
2017-12-20 03:21:12  162.210.110.4   216.218.254.202  2 u  436 1024  367  187.280  29898.2 2892.76
2017-12-20 03:21:12  203.112.17.81   203.112.1.4      4 u  206 1024  377   22.303  30034.7 2416.41

2017-12-20 05:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 05:21:12 ==============================================================================
2017-12-20 05:21:12  157.7.208.12    133.243.238.244  2 u  577 1024  377   21.715  33002.6 1976.60
2017-12-20 05:21:12  157.7.153.56    133.243.238.244  2 u  236 1024  377   18.845  33191.1 1962.56
2017-12-20 05:21:12  162.210.110.4   216.218.192.202  2 u  243 1024  377  171.204  33157.1 2007.93
2017-12-20 05:21:12  203.112.17.81   203.112.1.4      4 u  980 1024  377   23.695  33348.4 2461.91

2017-12-20 07:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 07:21:12 ==============================================================================
2017-12-20 07:21:12  157.7.208.12    133.243.238.244  2 u  471 1024  377   23.319  37320.8 2407.92
2017-12-20 07:21:12  157.7.153.56    10.84.87.146     2 u   63 1024  377   17.479  36987.7 1952.78
2017-12-20 07:21:12  162.210.110.4   216.218.192.202  2 u 1029 1024  377  174.197  37022.4 2489.83
2017-12-20 07:21:12  203.112.17.81   203.112.1.4      4 u  832 1024  377   37.843  36601.8 1961.26

2017-12-20 09:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 09:21:12 ==============================================================================
2017-12-20 09:21:12  157.7.208.12    133.243.238.243  2 u  302 1024  377   23.595  41119.4 2428.08
2017-12-20 09:21:12  157.7.153.56    133.243.238.243  2 u  951 1024  377   20.092  40783.7 2421.30
2017-12-20 09:21:12  162.210.110.4   216.218.254.202  2 u  861 1024  357  227.002  40794.2 2819.32
2017-12-20 09:21:12  203.112.17.81   203.112.1.4      4 u  593 1024  367   24.574  40960.9 2878.66

2017-12-20 11:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 11:21:12 ==============================================================================
2017-12-20 11:21:12  157.7.208.12    133.243.238.244  2 u  167 1024  375   24.937  44902.5 2908.56
2017-12-20 11:21:12  157.7.153.56    103.1.106.69     2 u  721 1024  377   23.686  44656.0 2485.00
2017-12-20 11:21:12  162.210.110.4   216.218.254.202  2 u  673 1024  377  168.522  41373.8 1917.92
2017-12-20 11:21:12  203.112.17.81   203.112.1.4      4 u  353 1024  357   27.599  44798.3 2838.39

2017-12-20 13:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 13:21:12 ==============================================================================
2017-12-20 13:21:12  157.7.208.12    133.243.238.244  2 u  947 1024  137   23.724  47656.8 2561.88
2017-12-20 13:21:12  157.7.153.56    133.243.238.164  2 u  517 1024  375   20.906  48433.1 2923.86
2017-12-20 13:21:12  162.210.110.4   216.218.254.202  2 u  398 1024  377  161.771  47935.8 2050.31
2017-12-20 13:21:12  203.112.17.81   203.112.1.4      4 u  149 1024  377   21.381  48623.0 2463.45

2017-12-20 15:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 15:21:12 ==============================================================================
2017-12-20 15:21:12  157.7.208.12    133.243.238.244  2 u  757 1024  367   25.141  52019.7 2874.31
2017-12-20 15:21:12  157.7.153.56    133.243.238.163  2 u  279 1024  377   22.055  52265.0 2455.92
2017-12-20 15:21:12  162.210.110.4   216.218.192.202  2 u  243 1024  377  198.720  52260.0 2454.19
2017-12-20 15:21:12  203.112.17.81   203.112.1.4      4 u 1026 1024  337   22.962  51880.8 2753.55

2017-12-20 17:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 17:21:12 ==============================================================================
2017-12-20 17:21:12  157.7.208.12    133.243.238.244  2 u  606 1024  377   20.566  55803.7 2421.95
2017-12-20 17:21:12  157.7.153.56    133.243.238.243  2 u   28 1024  377   28.573  55573.5 1999.49
2017-12-20 17:21:12  162.210.110.4   216.218.192.202  2 u   54 1024  377  199.352  55004.9 1610.15
2017-12-20 17:21:12  203.112.17.81   203.112.1.4      4 u 1924 1024  376   21.054  54573.8 1958.08

2017-12-20 19:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 19:21:12 ==============================================================================
2017-12-20 19:21:12  157.7.208.12    133.243.238.243  2 u  466 1024  377   20.950  59584.6 2416.40
2017-12-20 19:21:12  157.7.153.56    103.1.106.69     2 u 1955 1024  356   22.742  58262.9 2388.64
2017-12-20 19:21:12  162.210.110.4   216.218.192.202  2 u  957 1024  377  212.612  59303.4 2445.12
2017-12-20 19:21:12  203.112.17.81   203.112.1.4      4 u  711 1024  175   63.793  59463.6 3142.28

2017-12-20 21:21:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-20 21:21:12 ==============================================================================
2017-12-20 21:21:12  157.7.208.12    133.243.238.244  2 u  245 1024  377   24.519  62854.3 1972.96
2017-12-20 21:21:12  157.7.153.56    10.84.87.146     2 u 1818 1024  156   26.158  62048.7 2702.15
2017-12-20 21:21:12  162.210.110.4   216.218.254.202  2 u  778 1024  377  319.841  63048.6 2401.36
2017-12-20 21:21:12  203.112.17.81   203.112.1.4      4 u 1558 1024  202   79.498  62739.2 4552.75
施した設定は次の通りです。
[root@hoge act27m48_1]# less actlog/trackfile/2017-12/23-Sat-0341.diff.gz
...
-TOP   0100644  root     root      2017-04-12 22:25:40  /etc/ntp.conf
+TOP   0100644  root     root      2017-12-20 22:25:53  /etc/ntp.conf
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # For more information about this file, see the man pages
 # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
@@ -56296,10 +51027,10 @@
 
 # Use public servers from the pool.ntp.org project.
 # Please consider joining the pool (http://www.pool.ntp.org/join.html).
-server 0.centos.pool.ntp.org iburst
-server 1.centos.pool.ntp.org iburst
-server 2.centos.pool.ntp.org iburst
-server 3.centos.pool.ntp.org iburst
+server 0.centos.pool.ntp.org iburst maxpoll 7
+server 1.centos.pool.ntp.org iburst maxpoll 7
+server 2.centos.pool.ntp.org iburst maxpoll 7
+server 3.centos.pool.ntp.org iburst maxpoll 7
 
 #broadcast 192.168.1.255 autokey       # broadcast server
 #broadcastclient                       # broadcast client
@@ -62182,6 +56913,532 @@
こちらを設定後に、drift 値をリセットして再起動 (2017-12-20 22:26頃) しました。下記は、bash の history から振り返りです。echo 0 > /var/lib/ntp/drift でもいいはずですが、この時は削除してました。
[root@hoge ~]# rm /var/lib/ntp/drift
[root@hoge ~]# systemctl start ntpd.service
次は、収束に向かった時間帯のデータです。
[root@hoge act27m48_1]# zcat actlog/ntpq-np.{6,5,4}.gz | reduce_actlog -i 14400
2017-12-21 03:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 03:27:12 ==============================================================================
2017-12-21 03:27:12 +88.198.12.78    254.48.138.1     2 u   16   64  377  345.262  56792.7  70.685
2017-12-21 03:27:12 +62.168.65.36    10.0.0.1         4 u   42   64  377  347.361  56808.1  95.757
2017-12-21 03:27:12 *160.16.75.242   103.1.106.69     2 u   50   64  377   17.471  56932.2  92.188
2017-12-21 03:27:12 +77.78.107.252   193.79.237.14    2 u   21   64  377  345.141  56783.5  74.145

2017-12-21 07:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 07:27:12 ==============================================================================
2017-12-21 07:27:12 +88.198.12.78    192.53.103.108   2 u   61   64  377  320.188  49880.2 104.438
2017-12-21 07:27:12 +62.168.65.36    10.0.0.1         4 u    6   64  377  377.985  49867.2  97.867
2017-12-21 07:27:12 *160.16.75.242   103.1.106.69     2 u   56   64  377   18.170  49860.1  93.587
2017-12-21 07:27:12 +77.78.107.252   193.79.237.14    2 u   18   64  377  291.710  49848.3  75.983

2017-12-21 11:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 11:27:12 ==============================================================================
2017-12-21 11:27:12 +88.198.12.78    192.53.103.108   2 u    3   64  377  331.510  42933.5 136.385
2017-12-21 11:27:12 -62.168.65.36    10.0.0.1         4 u   57   64  377  333.708  42801.5  91.268
2017-12-21 11:27:12 *160.16.75.242   103.1.106.69     2 u    1   64  377   19.543  42854.0  91.711
2017-12-21 11:27:12 +77.78.107.252   193.79.237.14    2 u   64   64  377  339.216  43001.7 179.162

2017-12-21 15:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 15:27:12 ==============================================================================
2017-12-21 15:27:12 +88.198.12.78    131.188.3.220    2 u   44   64  377  393.819  35847.8  67.966
2017-12-21 15:27:12 +62.168.65.36    10.0.0.1         4 u   51   64  337  401.860  36045.8 247.499
2017-12-21 15:27:12 *160.16.75.242   103.1.106.69     2 u   58   64  377   20.191  35969.4  80.117
2017-12-21 15:27:12 +77.78.107.252   193.79.237.14    2 u   60   64  377  293.774  36014.0 152.626

2017-12-21 19:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 19:27:12 ==============================================================================
2017-12-21 19:27:12 +88.198.12.78    192.53.103.108   2 u    1   64  177  406.766  29028.5 212.348
2017-12-21 19:27:12 +62.168.65.36    10.0.0.1         4 u   32   64  377  409.769  28954.1 171.501
2017-12-21 19:27:12 *160.16.75.242   103.1.106.69     2 u   17   64  377   18.957  28934.9  78.838
2017-12-21 19:27:12 +77.78.107.252   193.79.237.14    2 u   29   64  377  363.591  28820.2  95.755

2017-12-21 23:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-21 23:27:12 ==============================================================================
2017-12-21 23:27:12 +88.198.12.78    131.188.3.221    2 u   49   64  377  473.349  21821.2  79.942
2017-12-21 23:27:12 -62.168.65.36    10.0.0.1         4 u   35   64  277  479.798  21832.4  77.411
2017-12-21 23:27:12 *160.16.75.242   103.1.106.69     2 u   64   64  377   19.829  21882.8 146.781
2017-12-21 23:27:12 +77.78.107.252   193.79.237.14    2 u   19   64  377  330.402  22054.9 203.061

2017-12-22 03:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 03:27:12 ==============================================================================
2017-12-22 03:27:12 +88.198.12.78    131.188.3.221    2 u   35   64  377  458.565  14876.5  54.687
2017-12-22 03:27:12 -62.168.65.36    10.0.0.1         4 u   15   64  377  500.141  14913.4  87.029
2017-12-22 03:27:12 *160.16.75.242   103.1.106.69     2 u   64   64  377   21.428  14939.8 117.483
2017-12-22 03:27:12 +77.78.107.252   193.79.237.14    2 u   15   64  377  314.150  15046.0 150.638

2017-12-22 07:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 07:27:12 ==============================================================================
2017-12-22 07:27:12 +88.198.12.78    192.53.103.108   2 u   10   64  377  417.045  8068.63 187.511
2017-12-22 07:27:12 -62.168.65.36    10.0.0.1         4 u   14   64  377  417.965  7880.89  95.622
2017-12-22 07:27:12 *160.16.75.242   103.1.106.69     2 u   49   64  377   19.356  8112.88 113.098
2017-12-22 07:27:12 +77.78.107.252   193.79.237.14    2 u    4   64  377  299.745  7951.78  88.928

2017-12-22 11:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 11:27:12 ==============================================================================
2017-12-22 11:27:12 +88.198.12.78    192.53.103.108   2 u   12   64  377  393.500  911.438  83.464
2017-12-22 11:27:12 +62.168.65.36    10.0.0.1         4 u   13   64  377  368.658  928.835  88.341
2017-12-22 11:27:12 *160.16.75.242   103.1.106.69     2 u   20   64  377   19.737  931.036 148.066
2017-12-22 11:27:12 +77.78.107.252   193.79.237.14    2 u   32   64  377  293.024  1078.17 145.997

2017-12-22 15:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 15:27:12 ==============================================================================
2017-12-22 15:27:12 +88.198.12.78    192.53.103.108   2 u  116   64  366  350.150  -291.90  56.264
2017-12-22 15:27:12 -62.168.65.36    10.0.0.1         4 u   23   64  377  364.775  -287.10  66.848
2017-12-22 15:27:12 *160.16.75.242   103.1.106.69     2 u   63   64  377   17.308  -268.27   8.694
2017-12-22 15:27:12 +77.78.107.252   193.79.237.14    2 u   15   64  377  304.360  -284.94  48.563

2017-12-22 19:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 19:27:12 ==============================================================================
2017-12-22 19:27:12 +88.198.12.78    130.149.17.21    2 u   32   64  375  350.803  -105.18  35.724
2017-12-22 19:27:12 -62.168.65.36    10.0.0.1         4 u   28   64  355  397.018  -133.22  65.489
2017-12-22 19:27:12 *160.16.75.242   103.1.106.69     2 u   64   64  377   18.326  -77.383   2.308
2017-12-22 19:27:12 +77.78.107.252   193.79.237.14    2 u   32   64  377  274.139  -83.737  53.700

2017-12-22 23:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-22 23:27:12 ==============================================================================
2017-12-22 23:27:12 +88.198.12.78    129.69.1.170     2 u   20   64  377  406.888  -82.067  62.065
2017-12-22 23:27:12 -62.168.65.36    10.0.0.1         4 u    2   64  377  459.460  -96.257  39.912
2017-12-22 23:27:12 *160.16.75.242   103.1.106.69     2 u   63   64  377   19.970  -20.498   2.315
2017-12-22 23:27:12 +77.78.107.252   193.79.237.14    2 u    6   64  377  272.188  -31.527  50.493

2017-12-23 03:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 03:27:12 ==============================================================================
2017-12-23 03:27:12 +88.198.12.78    130.149.17.8     2 u   65   64  377  407.321  -59.207  58.910
2017-12-23 03:27:12 -62.168.65.36    10.0.0.1         4 u   33   64  377  440.553  -71.257  58.737
2017-12-23 03:27:12 *160.16.75.242   103.1.106.69     2 u    3   64  377   17.629   -5.087   2.468
2017-12-23 03:27:12 +77.78.107.252   193.79.237.14    2 u    3   64  377  262.537  -12.461  46.262

2017-12-23 07:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 07:27:12 ==============================================================================
2017-12-23 07:27:12 +88.198.12.78    192.53.103.108   2 u   14  128  377  353.793  -38.173  31.635
2017-12-23 07:27:12 -62.168.65.36    10.0.0.1         4 u  128  128  357  314.421   -6.258  65.600
2017-12-23 07:27:12 *160.16.75.242   103.1.106.69     2 u   56  128  377   20.802   -2.770   2.526
2017-12-23 07:27:12 +77.78.107.252   193.79.237.14    2 u   35  128  377  293.276  -21.234  44.357

2017-12-23 11:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 11:27:12 ==============================================================================
2017-12-23 11:27:12 +88.198.12.78    131.188.3.221    2 u   72  128  377  355.471  -32.193  52.514
2017-12-23 11:27:12 -62.168.65.36    10.0.0.1         4 u   35  128  377  322.267   -6.150  65.073
2017-12-23 11:27:12 *160.16.75.242   103.1.106.69     2 u    6  128  377   17.714   -0.544  21.378
2017-12-23 11:27:12 +77.78.107.252   193.79.237.14    2 u   89  128  377  273.443   -7.268  69.730

2017-12-23 15:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 15:27:12 ==============================================================================
2017-12-23 15:27:12 +88.198.12.78    130.149.17.21    2 u  218  128  376  398.335  -36.899  66.687
2017-12-23 15:27:12 -62.168.65.36    10.0.0.1         4 u   69  128  377  399.607  -50.116  52.741
2017-12-23 15:27:12 *160.16.75.242   103.1.106.69     2 u   54  128  377   18.504    3.443   2.251
2017-12-23 15:27:12 +77.78.107.252   193.79.237.14    2 u  130  128  377  286.565   -6.324  43.542

2017-12-23 19:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 19:27:12 ==============================================================================
2017-12-23 19:27:12 +88.198.12.78    192.53.103.108   2 u    3  128  377  420.145  -59.828  63.652
2017-12-23 19:27:12 -62.168.65.36    10.0.0.1         4 u  123  128  277  427.106  -55.130  69.321
2017-12-23 19:27:12 *160.16.75.242   103.1.106.69     2 u   25  128  377   18.303    5.238   2.064
2017-12-23 19:27:12 +77.78.107.252   193.79.237.14    2 u  103  128  377  266.104   -2.941  57.983

2017-12-23 23:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-23 23:27:12 ==============================================================================
2017-12-23 23:27:12 +88.198.12.78    192.53.103.108   2 u   72  128  377  450.629  -74.868  52.780
2017-12-23 23:27:12 -62.168.65.36    10.0.0.1         4 u   56  128  377  424.857  -52.707  45.454
2017-12-23 23:27:12 *160.16.75.242   103.1.106.69     2 u   53  128  377   18.711    0.328   5.487
2017-12-23 23:27:12 +77.78.107.252   193.79.237.14    2 u  100  128  377  279.764   -7.365  46.453

2017-12-24 03:27:12      remote           refid      st t when poll reach   delay   offset  jitter
2017-12-24 03:27:12 ==============================================================================
2017-12-24 03:27:12 +88.198.12.78    192.53.103.108   2 u    1  128  367  403.737  -48.499  55.266
2017-12-24 03:27:12 -62.168.65.36    10.0.0.1         4 u   17  128  377  417.837  -53.391  69.070
2017-12-24 03:27:12 *160.16.75.242   103.1.106.69     2 u   10  128  377   19.883    3.392   1.573
2017-12-24 03:27:12 +77.78.107.252   193.79.237.14    2 u   73  128  377  315.090  -27.232  37.709
最後に、今現在の drift 値です。
[root@hoge ~]# ntpq -np
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-178.33.126.120  213.251.128.249  2 u  128  128  377  286.983   61.092  46.824
+129.250.35.251  249.224.99.213   2 u   38  128  377   19.186   73.376   2.471
+45.76.221.157   103.1.106.69     2 u   95  128  377   21.958   76.460   1.490
*85.114.26.194   .DTS.            1 u   95  128  377  223.261  107.454  34.164
[root@hoge ~]# cat /var/lib/ntp/drift 
-14.359
ThinkPad は、何台も利用してきましたが、今回のように maxpoll の調整が必要になったことはなかったのですが、やっぱり最新の高度化した省電力機能のせいではないか?という憶測を抱いています。
それにしても、ThinkPad 25 のキーボード(バックライト光らせるとカッコイイ)は、なかなか快適です。CentOS 7.4 の動作もほとんど問題なし。どうにかして、Linux でも GeForce 940MX を活用できないのか?とは思うんですが、FireFox の動き(スクロール)もスムーズだし、ま、いいか。
[root@hoge ~]# dmidecode --type 1
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.

Handle 0x000C, DMI type 1, 27 bytes
System Information
 Manufacturer: LENOVO
 Product Name: 20K70003JP
 Version: ThinkPad 25
 Serial Number: xxxxxxxx
 UUID: 307F584C-2BAE-11B2-A85C-C18B88313792
 Wake-up Type: Power Switch
 SKU Number: LENOVO_MT_20K7_BU_Think_FM_ThinkPad 25
 Family: ThinkPad 25

[root@hoge ~]# uversion 
CentOS Linux release 7.4.1708           20K70003JP

BIOS version  : N1QET63W (1.38 )  08/22/2017
System serial : xxxxxxxx

CPU model  : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
Processors : 4  (1 sockets, 2 cores per CPU, Hyperthreading: enabled)

Memory : 15649 MB

Linux : 3.10.0-693.11.6.el7.x86_64  x86_64  (hoge)

[root@hoge ~]# lspci
00:00.0 Host bridge: Intel Corporation Device 5904 (rev 02)
00:02.0 VGA compatible controller: Intel Corporation Device 5916 (rev 02)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:1c.0 PCI bridge: Intel Corporation Device 9d10 (rev f1)
00:1c.6 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #7 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 (rev f1)
00:1d.2 PCI bridge: Intel Corporation Device 9d1a (rev f1)
00:1f.0 ISA bridge: Intel Corporation Device 9d58 (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Device 9d71 (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (4) I219-V (rev 21)
02:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940MX] (rev a2)
04:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)
3e:00.0 Non-Volatile memory controller: Lenovo Device 0004
2018-04-08追記
ひさびさに drift 値を確認してみました。
[root@hoge ~]# cat /var/lib/ntp/drift 
15.581
前に確認したときの値が、-14.359 だったのですが、今回は +15.581 と結構ブレていますね。仕事上、新旧いろいろなマシンを触ってますが、こんなにブレるマシンは見たことなかったです。

2018年1月12日金曜日

bashのhistory設定

コマンド実行時刻を bash の history で確認したい場合があり、少し設定を行っているのですが、忘れてしまうので備忘録。
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
 . /etc/bashrc
fi

unset HISTCONTROL
HISTSIZE=20000
HISTTIMEFORMAT=" %F %T  "
このように .bashrc に設定しています。20000という数字は経験値で、10000では足りなかった経験があるため、倍の値を採用しています。それと、細かいですが、%Tのうしろは2スペースにしておかないと、見ずらいと思います。
[root@hoge ~]# history
...
 1210   2018-01-13 18:19:49  history
[root@hoge ~]# 
人気ブログランキングへ にほんブログ村 IT技術ブログへ