PowerFlex sciniドライバー(SDC)がメモリー割り当てエラーを報告する(blkIO_HandleChecksumOnIoStart)
Summary: メモリー割り当てエラーは、sciniドライバー(SDCドライバー)によってsyslogで報告されます。
Symptoms
シナリオ
LinuxにインストールされているSDC
SDCにマップされたボリュームは、チェックサムを使用するように構成されたストレージ プールから割り当てられます
システムでメモリー不足またはメモリー断片化が発生しています。
症状
通常、次のようなメッセージがsyslogに表示されます。 /var/log/messages
Dec 12 15:36:09 server002 kernel: kworker/16:2H: page allocation failure: order:8, mode:0x104020 Dec 12 15:36:09 server002 kernel: CPU: 16 PID: 11460 Comm: kworker/16:2H Tainted: P OE ------------ 3.10.0-514.21.1.el7.x86_64 #1 Dec 12 15:36:09 server002 kernel: Hardware name: HP ProLiant DL560 Gen9/ProLiant DL560 Gen9, BIOS P85 01/04/2016 Dec 12 15:36:09 server002 kernel: Workqueue: kblockd blk_delay_work Dec 12 15:36:09 server002 kernel: 0000000000104020 0000000054aac964 ffff886aecfd37c0 ffffffff81686e13 Dec 12 15:36:09 server002 kernel: ffff886aecfd3850 ffffffff81187090 ffff88607ffda000 0000000000000010 Dec 12 15:36:09 server002 kernel: ffffffffffffff00 0010402000000000 0022522000000000 0000000054aac964 Dec 12 15:36:09 server002 kernel: Call Trace: Dec 12 15:36:09 server002 kernel: [<ffffffff81686e13>] dump_stack+0x19/0x1b Dec 12 15:36:09 server002 kernel: [<ffffffff81187090>] warn_alloc_failed+0x110/0x180 Dec 12 15:36:09 server002 kernel: [<ffffffff816829a7>] __alloc_pages_slowpath+0x6b7/0x725 Dec 12 15:36:09 server002 kernel: [<ffffffff8118b645>] __alloc_pages_nodemask+0x405/0x420 Dec 12 15:36:09 server002 kernel: [<ffffffff811cf7fa>] alloc_pages_current+0xaa/0x170 Dec 12 15:36:09 server002 kernel: [<ffffffff81185f6e>] __get_free_pages+0xe/0x50 Dec 12 15:36:09 server002 kernel: [<ffffffff811db09e>] kmalloc_order_trace+0x2e/0xa0 Dec 12 15:36:09 server002 kernel: [<ffffffff811dd871>] __kmalloc+0x221/0x240 Dec 12 15:36:09 server002 kernel: [<ffffffff811de7c3>] ? kmem_cache_alloc+0x193/0x1e0 Dec 12 15:36:09 server002 kernel: [<ffffffffa07b697a>] blkIO_OnChecksumIoStart+0x5a/0x550 [scini] Dec 12 15:36:09 server002 kernel: [<ffffffffa07ed587>] ? mosMCAllocator_Alloc+0x57/0xa0 [scini] Dec 12 15:36:09 server002 kernel: [<ffffffffa07b3ac1>] blkIO_HandleChecksumOnIoStart+0xc1/0x220 [scini] Dec 12 15:36:09 server002 kernel: [<ffffffffa07b7ea8>] mapVolIO_Do_CK+0x398/0x1e80 [scini] Dec 12 15:36:09 server002 kernel: [<ffffffffa07b4306>] blkIO_Do_CK+0x266/0xa00 [scini] Dec 12 15:36:09 server002 kernel: [<ffffffffa07e9838>] mosMit_EntryWrapper+0x128/0x1b0 [scini] Dec 12 15:36:09 server002 kernel: [<ffffffffa07e9a2c>] mosMit_StartNow+0x7c/0x90 [scini] Dec 12 15:36:09 server002 kernel: [<ffffffffa07b4ea6>] blkIO_Request+0x356/0x730 [scini] Dec 12 15:36:09 server002 kernel: [<ffffffff810cf27e>] ? dequeue_task_fair+0x41e/0x660 Dec 12 15:36:09 server002 kernel: [<ffffffff812eb7e3>] __blk_run_queue+0x33/0x40 Dec 12 15:36:09 server002 kernel: [<ffffffff812ed915>] blk_delay_work+0x25/0x60 Dec 12 15:36:09 server002 kernel: [<ffffffff810a845b>] process_one_work+0x17b/0x470 Dec 12 15:36:09 server002 kernel: [<ffffffff810a9296>] worker_thread+0x126/0x410 Dec 12 15:36:09 server002 kernel: [<ffffffff810a9170>] ? rescuer_thread+0x460/0x460 Dec 12 15:36:09 server002 kernel: [<ffffffff810b0a4f>] kthread+0xcf/0xe0 Dec 12 15:36:09 server002 kernel: [<ffffffff810b0980>] ? kthread_create_on_node+0x140/0x140 Dec 12 15:36:09 server002 kernel: [<ffffffff81697418>] ret_from_fork+0x58/0x90 Dec 12 15:36:09 server002 kernel: [<ffffffff810b0980>] ? kthread_create_on_node+0x140/0x140
メッセージは次のように始まります。 page allocation failure
スタックトレースには、次のものが含まれます。 blkIO_HandleChecksumOnIoStart
影響
ScaleIO内部チェックサム メカニズムでは、一部のI/O操作が検証されない場合があります。
Cause
チェックサム機能がストレージ プールで有効になっている場合、ストレージ プールから割り当てられたボリュームに対するI/O操作には、SDCとSDS間のネットワーク メッセージにチェックサムが含まれます
これらのChecksum値を計算するために、SDCはメモリーを動的に割り当てます。
ホストでメモリー不足またはメモリーの断片化が発生している場合、チェックサム操作に必要なメモリー割り当てが失敗する可能性があります。
メモリーの割り当てに失敗すると、SDCはチェックサムを計算できず、ネットワーク メッセージに添付しません
SDSは、チェックサムを含まないメッセージをSDCから受信すると、メッセージの内容を確認せずにI/O操作を実行します。
結論として、メモリー割り当ての失敗は、アプリケーションのI/O処理やScaleIOのパフォーマンスには影響しません。
Resolution
可能であれば、ホストに断片化されていない十分な空きメモリーがあることを確認します。
影響を受けるバージョン
すべてのScaleIOバージョン - 設計どおりに動作
修正済みバージョン
該当なし