JP2022550462A - 書き込み回数制限による不揮発性メモリの長寿命化 - Google Patents

書き込み回数制限による不揮発性メモリの長寿命化 Download PDF

Info

Publication number
JP2022550462A
JP2022550462A JP2022520486A JP2022520486A JP2022550462A JP 2022550462 A JP2022550462 A JP 2022550462A JP 2022520486 A JP2022520486 A JP 2022520486A JP 2022520486 A JP2022520486 A JP 2022520486A JP 2022550462 A JP2022550462 A JP 2022550462A
Authority
JP
Japan
Prior art keywords
subsystem
write
remediation
met
timer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022520486A
Other languages
English (en)
Inventor
ウォルター,チャド
ジャクソン デイビス,イアン
シャック,オーガスト
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Landis and Gyr Innovations Inc
Original Assignee
Landis and Gyr Innovations Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Landis and Gyr Innovations Inc filed Critical Landis and Gyr Innovations Inc
Publication of JP2022550462A publication Critical patent/JP2022550462A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

ストレージデバイスへの書き込みサイクルを制限する方法は、第1のサブシステムによって実行されるメモリへの書き込みの第1のセットの第1のカウントを追跡し、第1のカウントが第1のサブシステムの書き込み閾値を満たすことを判定することを含む。方法は、第1のカウントが第1のサブシステムの書き込み閾値を超えることに基づきブロッキング基準が第1のサブシステムによって満たされることを判定することと、ブロッキング基準がコンピューティングデバイスの第2のサブシステムによって満たされないことを判定することを含む。方法は、ブロッキング基準が第1のサブシステムによって満たされることに基づき第1のセットの書き込みがストレージデバイスに同期されることをブロックすることと、ブロッキング基準が第2のサブシステムによって満たされないことに基づき第2のサブシステムのメモリコンテンツをストレージデバイスに同期させることを含む。

Description

技術分野
本発明の様々な実装は、不揮発性メモリに関し、より詳細には、不揮発性メモリの寿命を延長するための書き込みサイクルの制限に関するものである。
背景
フラッシュストレージは、電気的に書き込みと消去が可能な不揮発性コンピュータメモリの一形態である。フラッシュストレージは、他の形態の不揮発性メモリと比較して様々な利点を有する。例えば、フラッシュストレージは、より経済的で信頼性が高く、より低い電力消費要件を有する。現在、スマートフォンやメモリースティック、デジタルオーディオプレーヤー、科学機器などに幅広く利用されている。
概要
一実装形態では、ストレージデバイスへの書き込みサイクルを制限する方法は、コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの書き込みの第1のセットの第1のカウントを追跡し、さらに、第1のカウントが第1のサブシステムの書き込み閾値を満たすことを決定することを含む。本方法は、第1のカウントが第1のサブシステムの書き込み閾値を超えることに基づいて、ブロッキング基準が第1のサブシステムによって満たされることを判定することと、さらに、ブロッキング基準がコンピューティングデバイスの第2のサブシステムによって満たされないことを判定することとを含む。この方法は、ブロッキング基準が第1のサブシステムによって満たされることに基づいて、第1のセットの書き込みがストレージデバイスに同期されることをブロックすることと、ブロッキング基準が第2のサブシステムによって満たされないことに基づいて、第2のサブシステムのメモリコンテンツをストレージデバイスに同期させることとを含む。
別の実施態様では、ストレージデバイスへの書き込みサイクルを制限するためのコンピュータプログラムプロダクトは、その上に具現化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含む。プログラム命令は、プロセッサにある方法を実行させるためにプロセッサによって実行可能である。本方法は、コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの書き込みの第1のセットの第1のカウントを追跡し、さらに、第1のカウントが第1のサブシステムの書き込み閾値を満たすことを決定することを含む。本方法は、第1のカウントが第1のサブシステムの書き込み閾値を超えることに基づいて、ブロッキング基準が第1のサブシステムによって満たされることを判定することと、さらに、ブロッキング基準がコンピューティングデバイスの第2のサブシステムによって満たされないことを判定することとを含む。この方法は、ブロッキング基準が第1のサブシステムによって満たされることに基づいて、第1のセットの書き込みがストレージデバイスに同期されることをブロックすることと、ブロッキング基準が第2のサブシステムによって満たされないことに基づいて、第2のサブシステムのメモリコンテンツをストレージデバイスに同期させることとを含む。
さらに別の実施態様では、コンピューティングデバイスは、プロセッサと、メモリとを含む。プロセッサは、コンピュータ可読命令を実行するように構成され、メモリは、プロセッサによって実行されると、プロセッサに動作を実行させるコンピュータ可読命令を格納するように構成される。動作は、コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの書き込みの第1のセットの第1のカウントを追跡し、さらに、第1のカウントが第1のサブシステムの書き込み閾値を満たすことを判定することを含む。操作は、第1のカウントが第1のサブシステムの書き込み閾値を超えることに基づいて、ブロッキング基準が第1のサブシステムによって満たされることを判定することと、コンピューティングデバイスの第2のサブシステムによってブロッキング基準が満たされないことを判定することとを含む。動作は、ブロッキング基準が第1のサブシステムによって満たされることに基づいて、第1のセットの書き込みがストレージデバイスに同期されることをブロックすることと、ブロッキング基準が第2のサブシステムによって満たされないことに基づいて、第2のサブシステムのメモリコンテンツをストレージデバイスに同期させることとを含む。
これらの例示的な態様および特徴は、現在説明されている主題を制限または定義するためではなく、本願で説明される概念の理解を助けるために例を提供するために言及されている。現在説明されている主題の他の態様、利点、および特徴は、本出願全体を検討した後に明らかになるであろう。
本開示のこれらおよび他の特徴、態様、および利点は、以下の詳細な説明を添付図面を参照しながら読むと、よりよく理解される。
図1は、本明細書に記載される発明の特定の実施態様による、ストレージデバイスの寿命を保護するためのストレージ保護システムの概念図である。 図2は、本発明の特定の実施態様による、ストレージ保護システムが実行可能なコンピューティングデバイス、具体的にはユーティリティメータのアーキテクチャ図である。 図3は、本発明の特定の実施態様による、ストレージデバイスの寿命を保護するためにストレージデバイスへの書き込みを管理するための方法のフロー図である。 図4は、本発明の特定の実施態様による、ストレージデバイスの寿命を保護するように、違反を犯したサブシステムのブラックリストを管理するための方法のフロー図である。
詳細な説明
NANDや組み込みマルチメディアコントローラ(eMMC)などのフラッシュストレージ技術を利用するデバイスは、実行された書き込みおよび消去操作(すなわち、書き込みサイクル)の累積数の関数である限られた寿命を有する。書き込みサイクルが実行されると、フラッシュストレージは老化し、フラッシュストレージに書き込まれたデータは破損してしまう。具体的には、書き込み回数が多くなると、記憶保持時間(メモリに書き込まれたデータが有効である時間)が短くなる。最終的には、フラッシュストレージのあるブロックに対して多数の書き込みサイクルが発生すると、そのブロックは保持期間が極端に短くなり、使い物にならなくなる可能性がある。この書き込みサイクルによる老化現象は、不可逆的である。デバイスの様々なアプリケーションは、通常、デバイス上の不揮発性メモリを共有する。そのため、あるアプリケーションが誤動作したり、悪意を持って多数の書き込みサイクルを実行したりすると、結果として不揮発性メモリに障害が発生し、デバイス上の他のアプリケーションに影響を与える可能性がある。このように、多数の書き込みサイクルによって引き起こされる保持力の低下は、ソフトウェアの動作によって引き起こされ得るハードウェア障害である。
フラッシュストレージの保持期間に対する書き込みサイクルの影響により、フラッシュストレージの使用は、長期使用を意図したデバイスに組み込むことが不可能になっている。フラッシュドライブやスマートフォンなどのライフサイクルの短いデバイスは、しばしばフラッシュストレージを使用するが、何年もの寿命を意図した製品は、通常、磁気ストレージデバイスなどの他の何らかのストレージ技術を使用する。その結果、フラッシュストレージの利点は、そのようなデバイスに組み込まれず、これらのデバイスが、製造によりコストがかかるか、信頼性が低いか、またはより大きな電力要件を有するようになる方向に向かう。
本明細書で説明する実施態様では、ストレージ保護システムは、試行された書き込みの数を追跡し、これは、完了した書き込みと本明細書で説明するようにブロックされた書き込みの両方を含むことができる。サブシステムの試行された書き込みが、過剰を表すとみなされる書き込み閾値を満たす(例えば、等しいかまたは超える)場合、ストレージ保護システムは、この過剰を改善するための措置を講じることができる。例えば、ストレージ保護システムは、サブシステムを中断または停止してもよく、またはストレージ保護システムは、デバイス全体を再起動してもよい。したがって、本明細書で説明する実装は、サブシステムの書き込みサイクルを関連する書き込み閾値に制限する。さらに、いくつかの実装では、ストレージ保護システムは、ホワイトリストおよびブラックリストを維持する。ホワイトリスト上のサブシステムは、その書き込みサイクルが制限されることを免除されてもよく、一方、ブラックリスト上のサブシステムは、それぞれの書き込み閾値を満たした履歴を有するために、より厳しい罰則の対象となりうる。このように、発生する書き込みサイクルを制限することによって、ストレージデバイスの寿命が保護され得る。
装置のサブシステムの様々な書き込み閾値は、装置の所望の寿命に基づいて選択されてもよい。サブシステムにそのような書き込み閾値に従うか、または改善のリスクを負うことを要求することによって、ストレージ保護システムは、したがって、ストレージデバイス上で発生する書き込みサイクルを制限することができる。ストレージデバイスの寿命は書き込みサイクルの数に基づいているので、ストレージ保護システムは、このように、寿命が期待通りであることを保証し得る。その結果、デバイスの製造業者は、予測できない書き込みサイクルによってそのようなデバイスの寿命が悪影響を受けることを懸念せずにフラッシュストレージを利用することができ、また、本明細書で説明する実装は、書き込みサイクルに関して期待されるパラメータ内でデバイスが動作することを保証することができるので、その製造業者は、デバイス仕様を作成する際にそのようなデバイスの寿命をより正確に提供することができる。
図1は、本明細書に記載される発明の特定の実施態様による、ストレージデバイス110の寿命を保護するためのストレージ保護システム100の概念図である。図1に示すように、ストレージ保護システム100は、デスクトップコンピュータ、ノートブックコンピュータ、ユーティリティメータ、またはフラッシュストレージを利用する他のコンピューティングデバイス120に統合されてもよい。
コンピューティングデバイス120は、処理ユニット130、メモリ140、および本明細書においてストレージ110とも呼ばれるストレージデバイス110を含んでもよい。処理ユニット130は、メモリ140またはストレージ110に格納されたプログラムコードを実行するように構成されてもよい。例えば、処理ユニット130は、マイクロプロセッサであってもよいし、処理ユニット130は、メモリ140もしくはストレージ110、またはその両方が統合されたマイクロコントローラであってもよい。メモリ140は、データを格納し、処理ユニット130によって実行されるプログラムコードを格納するように構成された、ランダムアクセスメモリ(RAM)などの揮発性メモリの一形態であってよい。ストレージ110は、データ及びプログラムコードを格納するように構成された不揮発性メモリであってもよい。例えば、ストレージ110は、NANDまたはeMMCなどのフラッシュストレージの一形態である。
いくつかの実装では、ストレージ保護システム100は、サブシステムモニタ150およびブラックリストマネージャ160を含み、これらの各々は、コンピューティングデバイス120上で実行されてもよく、コンピューティングデバイス120と通信していてもよい。サブシステムモニタ150は、書き込み閾値のセットを利用してもよく、各書き込み閾値は、コンピューティングデバイス120の対応するサブシステム170に関連付けられる。具体的には、各書き込み閾値は、時間間隔(例えば、1時間)内に対応するサブシステム170によって実行されることを許可される書き込みサイクルの数を示すことができる。それぞれの書き込み閾値と比較した、間隔中にサブシステム170によって実行された書き込み試行に基づき、サブシステムモニタ150は、書き込み試行をブロックするか、サブシステム170をブラックリストに登録するか、または他の改善措置を実行してもよい。ブラックリストマネージャ160は、ブラックリスト180上のサブシステム170を管理してもよく、それらのサブシステム170に対して改善措置を実行してもよく、または必要に応じてブラックリスト180からそれらのサブシステム170を解放してもよい。
サブシステム170は、例えば、コンピューティングデバイス120にインストールされたアプリケーションパッケージ、オペレーティングシステム、または共通のタスクに向けて動作する1つ以上のプロセスのセットであり得る。サブシステム170は、1つまたは複数の関連するプロセスを含むことができ、サブシステム170に関連するそれらのプロセスを通じて書き込みを実行することができる。いくつかの実装では、コンピューティングデバイス120の設計者(例えば、製造者またはサービスプロバイダ)は、サブシステム170を定義する;例えば、設計者は、どのプロセスが一緒になってサブシステム170を形成するかを定義する。設計者は、さらに、各サブシステム170に対応する書き込み閾値を決定してもよい。いくつかの実装では、違反行為(例えば、そのそれぞれの書き込み閾値を超える)を犯したサブシステム170は、停止、強制終了、または書き込みアクセスの拒否などの改善措置のリスクを負う。
コンピューティングデバイス120の様々なサブシステム170に対する書き込み閾値を選択するために、設計者は、コンピューティングシステムに対する所望の寿命を決定することができる。ストレージ110の耐久性(すなわち、メモリブロックが使用不能になるまでの書き込みサイクル数)および所望の寿命に基づいて、設計者は、コンピューティングデバイス120が所望の寿命の間使用可能であり続けるように、その寿命を達成するための間隔(例えば、1日あたり)ごとの書き込みサイクルの総数を決定してもよい。設計者は、各そのような割り当てが書き込み閾値になるように、または書き込み閾値の基礎となるように、間隔あたりの書き込みサイクルの数をコンピューティングデバイス120に最初にインストールされた様々なサブシステム170に割り当ててもよい。各サブシステム170が、インターバルごとに同じ数の書き込みサイクルを割り当てるということは必要ない。むしろ、例えば、標準的な使用中に多くの書き込みを実行すると予想されるサブシステムが、標準的な使用中に少ない書き込みを実行すると予想されるサブシステムと比較して、間隔あたりの書き込みサイクルのより大きな部分を割り当てるように、割り当ては予想使用に基づいてもよい。
いくつかの実装では、様々な書き込み閾値は、コンピューティングデバイス120、たとえば、ストレージ110の専用パーティションに格納されてもよい。さらに、いくつかの実装では、書き込み閾値は動的である。例えば、新しいサブシステム170がコンピューティングデバイス120に追加されたとき、または書き込み閾値の対象とならない重要なプロセスが予想以上の書き込みを実行するとき、発生したまたは発生すると予想される追加の書き込みを収容するためにコンピューティングデバイス120の種々の書き込み閾値は下方調整されてもよい。例えば、新しいサブシステム170がコンピューティングデバイスに追加されたとき、例えば、サードパーティアプリケーションがインストールされたとき、他のサブシステム170の書き込み閾値は、新しいサブシステム170のための新しい書き込み閾値の追加に対応するために下方に調整されてもよい。具体的には、いくつかの実装では、新しい書き込み閾値は、他のサブシステム170の書き込み閾値から減算された書き込み量に等しいか、さもなければ、それに基づくものであってよい。書き込み閾値が調整されるとき、書き込み閾値の格納された値は、新しい値に調整されてもよい。動的書き込み閾値の使用を通じて、コンピューティングデバイス120においてサブシステム170が変化しても、ストレージ110の寿命は保護されることが可能である。
いくつかの実装では、ストレージ保護システム100は、ホワイトリスト190、ブラックリスト180、またはその両方を利用する。ホワイトリスト190は、以下でさらに説明するように、好まれるサブシステム170を含んでもよく、ブラックリスト180は、好まれないサブシステム170を含んでもよい。いくつかの実装では、図1に示すように、ブラックリスト180は、ブラックリスト化されたサブシステム170への参照のセットとして実装され、ホワイトリスト190は、ホワイトリスト化されたサブシステム170への参照のセットとして実装される。
ホワイトリスト190は、書き込み閾値なしで自由に動作することが許可されているサブシステム170、または、書き込み閾値が事実上存在しないほど高く設定されているサブシステム170を含むことができる。いくつかの実装では、サブシステム170は、設計時にホワイトリスト190に追加され、ホワイトリスト190への追加は永続的である。さらに、いくつかの実装では、ホワイトリスト190は、コンピューティングデバイス120の管理者により手動で修正され得る。ホワイトリストされたサブシステム170は、例えば、ストレージ保護システム100自体のプロセス、重要なプロセス、信頼できるプロセス、バーストで書き込みアクティビティを生成すると予想されるプロセス、またはデバッグのために利用されるプロセスなどを含むことができる。
ブラックリスト180は、その書き込み閾値を1回以上満たすという形で違反を犯したサブシステムを含んでもよい。違反を犯した結果、およびブラックリスト180に載った結果、サブシステム170は、ストレージ保護システム100から罰則またはより厳しい要件に直面する可能性がある。例えば、ブラックリストに載ったサブシステム170は、ストレージ110への書き込みをブロックされてもよいし、以下に説明するような他の改善措置を受けてもよい。
ブラックリスト180及びホワイトリスト190は、様々な方法で実装することができる。例えば、ブラックリスト180とホワイトリスト190のそれぞれについて、ストレージ保護システム100は、リストを表すデータ構造を維持してもよい。さらに、または代替的に、各サブシステム170は、サブシステム170がブラックリスト、ホワイトリスト、またはそのどちらでもないかを示すステータスと関連付けられる場合がある。例えば、ストレージ保護システム100は、各サブシステム170をその関連するステータスにマッピングするテーブルまたは他のデータ構造を維持してもよく、または各サブシステム170は、それぞれのステータスを表す変数を含むまたは関連付けられるデータ構造によって表現されてもよい。そのような実装では、サブシステム170がブラックリスト180上にあるか、ホワイトリスト190上にあるか、またはそのどちらでもないかを決定することは、サブシステム170に関連付けられたステータスを決定することを含んでもよい。
いくつかの実装では、サブシステム170のステータスがブラックリストである場合、サブシステム170はブラックリスト180上にあると見なされてもよい。同様に、サブシステム170がブラックリスト180上にある場合、サブシステム170は、ブラックリストのステータスを有するとみなされてもよい。さらに、サブシステムのステータスがブラックリストに変更された場合、サブシステム170はブラックリスト180に追加されたとみなされてもよく、サブシステムのステータスがブラックリストから他のステータス(例えば、非ブラックリスト)に変更された場合、サブシステム170はブラックリスト180から削除されたとみなされてもよい。同様に、サブシステム170がブラックリスト180に追加されたときにサブシステムのステータスがブラックリストに変更されたとみなされ、サブシステム170がブラックリスト180から削除されたときにサブシステムのステータスが何らかの他のステータス(例えば、非ブラックリスト)に変更されたとみなされてもよい。同様に、サブシステム170のステータスがホワイトリストのステータスを有する場合、サブシステム170はホワイトリスト190上にあるとみなされてもよく、サブシステム170がホワイトリスト190上にある場合、そのサブシステム170はホワイトリストのステータスを有するとみなされてもよい。
上述したように、ブラックリスト180上のサブシステム170に対して、様々な改善措置が取られてもよい。しかし、いくつかの実装では、そのような改善措置が取られる前に、ストレージ保護システム100は、どのサブシステム170が違反を犯しているかを特定しなければならない。いくつかの実装では、サブシステムモニタ150は、試みられた書き込みを監視し、違反を犯しているサブシステム170のストレージ110への書き込みアクセスをブロックし、違反を犯しているサブシステム170をブラックリスト化するように構成される。
サブシステムモニタ150は、ハードウェア、ソフトウェア、またはその両方の組み合わせとして実装され得る。例えば、サブシステムモニタ150は、処理ユニット130によって実行されるプログラムコードとして実装されてもよく、またはサブシステムモニタ150は、専用のハードウェアデバイスとして実装されてもよい。いくつかの実装では、サブシステムモニタ150は、信頼されたステータスを有し、したがって、メモリ140への書き込みを監視し、(例えば、ストレージ110への直接書き込みをブロックすることによって、またはストレージ110へのメモリコンテンツの同期をブロックすることによって)ストレージ110への書き込みをブロックし、または(例えば、ストレージへの直接書き込みを許可することによって、またはストレージ110へのメモリコンテンツの同期を許可することによって)ストレージ110への書き込みを許容することが可能である。
1つの実装では、サブシステムモニタ150は、メモリ140のためのドライバを含むか、またはそれにアクセスすることができる。したがって、サブシステム170がメモリ140に書き込むとき、サブシステムモニタ150は、書き込みを追跡し、書き込みをメモリ140にメモリコンテンツとして保存することを可能にし、それらのメモリコンテンツがストレージ110に同期されたかどうかを決定する。典型的には、プロセスがメモリ140にデータを書き込み、そのデータは、コンピューティングデバイス120の通常の動作においてストレージ110に同期される(すなわち、書き込まれる)。しかしながら、いくつかの実装では、サブシステムモニタ150は、メモリ140とストレージ110との間の同期を中断し、したがって、ストレージへの書き込みが実際に起こるかどうかを制御する。サブシステムモニタ150は、本開示で説明したように、サブシステム170がその書き込み閾値を満たしていない場合など、特定の条件が満たされたときに、メモリ140をストレージ110に同期させることを開始することができる。別の実装では、各サブシステム170は、データを書き込むためにアプリケーションプログラミングインターフェース(API)を利用し、APIを実装するライブラリは、書き込み動作が実行されるときにサブシステムモニタ150を呼び出す。上述したように、サブシステムモニタ150は、書き込みがメモリ140を修正することを可能にするが、ストレージ110への直接書き込みを防止してもよく、メモリ140のストレージ110への同期を防止してもよい。サブシステムモニタ150は、サブシステム170がその書き込み閾値を満たしていないときなど、書き込み条件が満たされたとき、メモリ140をストレージ110に同期させることを開始してもよいし、ストレージ110への直接書き込みを許可してもよい。
定期的に、サブシステムモニタ150は、コンピューティングデバイス120の様々なサブシステム170がメモリ140にどのように書き込んだかを記述する書き込み統計値を決定してもよい。さらに、または代替的に、いくつかの実装では、サブシステムモニタ150は、書き込みが試みられるたびになど、書き込み統計値を連続的に更新する。これらの書き込み統計に基づき、サブシステムモニタ150は、どのサブシステム170が違反を犯したかを決定してもよい。サブシステムモニタ150は、そのようなサブシステム170がストレージ110に書き込むのをブロックして、そのサブシステム170によってメモリ140に書き込まれたメモリコンテンツがストレージ110に同期されないようにしてもよい。さらに、または代替的に、サブシステムモニタ150は、そのようなサブシステム170をブラックリスト180に追加してもよい。さらに、いくつかの実装では、サブシステムモニタ150は、デバッグまたは報告目的のためなど、様々なコンピューティングデバイス120の書き込み統計が一緒に集約または比較され得る、ヘッドエンドシステムなどの集中型ロケーションに書き込み統計を報告してもよい。
サブシステムモニタ150は、サブシステム170が違反を犯した(例えば、その書き込み閾値を満たした)ときに、様々な改善措置を開始するように構成され得る。改善措置は、例えば、サブシステム170をブラックリスト180に追加し、サブシステム170がブラックリスト180上にある間、ストレージ110への書き込みアクセスを防止すること、違反を記録すること、1回または限定期間ベースで書き込み閾値の超過を許可すること、サブシステム170に関連するプロセスを一時的に停止すること、サブシステム170に関連するプロセスを終了すること、コンピューティングデバイス120を全体としてリセットまたは再起すること、または重要プロセスを除いてコンピューティングデバイス120内の種々のサブシステム170を終了する(すなわちセーフモードに入る)ことを含んでもよい。これらの改善措置の各々は、それぞれの利点を有する。サブシステム170の各違反において、サブシステムモニタ150は、1つまたは複数の改善アクションを開始することができる。いくつかの実装では、各サブシステム170は、改善措置の所定のセットに関連付けられ、サブシステム170が違反を犯したとき、サブシステムモニタ150は、違反に応答してその所定のセット内の各改善措置を開始してもよい。
ストレージ110への書き込みアクセスを防止する改善措置は、サブシステム170がその書き込み閾値を超えること、またはその書き込み閾値を予め定義された程度に超えることを直接防止してもよい。書き込み閾値が満たされたときにストレージ110への書き込みを防止する結果、ストレージ保護システム100は、発生する総書き込みサイクルを制御することによって、ストレージ110の寿命を保護することができる。
違反のログを取るという改善措置は、ストレージ保護システム100またはヘッドエンドシステムなどのリモートシステムが、書き込みの履歴を追跡することを可能にする。そのため、保護システム100、ヘッドエンドシステム、または何らかの他のシステムまたはエンティティは、コンピューティングデバイス120が異常な動作をしているかどうかを識別することができ、または異常なサブシステム170を識別することができる。
書き込み閾値が1回限りまたは限定期間ベースで満たされることを可能にするという改善措置は、サブシステム170がそれぞれの書き込み閾値に関してある程度の余裕を持つことを可能にし得る。例えば、1回限りまたはまれなベースで書き込みのバーストを経験するサブシステム170の場合、そのようなバーストは、ストレージ110の寿命に影響を与える可能性がない場合がある。しかし、この場合、書き込み閾値を満たすことの発生を記録して、今後一定期間(例えば、サブシステム170がブラックリスト180上にある間)サブシステム170からの書き込みを防止するようにしてもよい。
サブシステムを一時的に停止する(例えば、サブシステム170に関連するプロセスを停止する)改善措置は、サブシステム170が再開されるまで、サブシステム170が書き込みを完了するのを遅延させる。したがって、サブシステム170の書き込み速度は、サスペンド期間(すなわち、サブシステム170のサスペンドと再開の間の時間)の関数に基づいて、効果的に低減され得る。いくつかの実施形態では、サブシステム170の書き込み速度を書き込み閾値以下の許容可能なレベルまで低減することを可能にするように、懸濁期間が選択される。さらに、サブシステム170の中断および再開は、サブシステム170内のロジックに対する最小限の破壊を可能にし得る。タイミングに鈍感なサブシステム170では、中断および再開操作の特別な取り扱いは必要なく、機能性は、より遅い速度であることを除いて通常通り継続することができる場合がある。
サブシステムを終了させる(例えば、サブシステム170に関連するプロセスを終了させる)改善措置は、少なくともサブシステム170が再起動するのにかかる時間、サブシステム170が書き込みを試みるのを停止してもよい。さらに、サブシステム170の再起動は、サブシステム170が過剰な書き込みの試みを実行する原因となっていた誤動作を修正してもよい。
重要なプロセスを除いてコンピューティングデバイス120内の様々なサブシステム170を終了させ、したがってコンピューティングデバイス120をセーフモードに移行させるという改善措置は、そのようなサブシステム170が過剰な書き込みを実行するのを停止し得る。場合によっては、サブシステム170は互いに相互作用し、したがって、あるサブシステム170の過剰な権利は、別のサブシステム170との相互作用によって引き起こされることがある。セーフモードに入ることで、ネットワーク通信や、コンピューティングデバイス120がユーティリティメータである場合、リソースの消費量の測定など、重要なプロセスの継続が可能になる場合がある。したがって、コンピューティングデバイス120は、その重要な機能の実行を継続してもよく、デバッグ、ソフトウェア更新、または消費報告目的のために、ヘッドエンドシステムなどの外部リソースと通信することができるかもしれない。
コンピューティングデバイス120を全体としてリセットまたは再起動する改善措置は、セーフモードに入ることと同じ利点を有するが、重要なプロセスが再起動またはリセットの間に一時的に停止されるので、潜在的により抜本的な解決策である。このより抜本的な措置は、特に、その違反が改善措置を促したサブシステム170が重要なプロセスである場合、または重要なプロセスと相互作用するサブシステム170である場合に、有用である場合がある。
いくつかの実装では、ブラックリストマネージャ160は、ブラックリスト180上のサブシステム170を管理することができる。例えば、各サブシステム170は、リリースタイマ、改善タイマ、またはその両方などの少なくとも1つのタイマと関連付けられてもよい。各そのようなタイマは、関連するサブシステム170がブラックリスト180に追加されるときに初期化(例えば、リセット)されてもよい。ブラックリストマネージャ160は、ブラックリストに登録されたサブシステム170に関連付けられたタイマを管理してもよく、そのようなタイマの満了時にブラックリストに登録されたサブシステム170に対してアクションを実行してもよい。
ブラックリストに登録されたサブシステム170に関連する場合、リリースタイマはリリース時間をカウントアウトしてもよく、その後、ブラックリストマネージャ160はサブシステム170をブラックリスト180からリリース(すなわち、削除)してもよい。したがって、ブラックリストマネージャ160は、関連するサブシステム170が違反のために一時的にしかブラックリストに載らないことを保証するために、リリースタイマを利用してもよい。いくつかの実装では、現在ブラックリストに載っているサブシステム170が別の違反を犯した場合、ブラックリストマネージャ160は、サブシステム170による直近の違反の後にリリース時間が経過するまでサブシステムのリリースが行われないように、リリースタイマをリセットしてもよい。このように、リリース時間は、サブシステム170がブラックリスト180から削除される後の、閾値時間として機能してもよい。
ブラックリストに登録されたサブシステム170に関連する場合、改善タイマが改善時間をカウントアウトし、その後、ブラックリストマネージャ160は、改善措置を開始する、またはサブシステムモニタ150によって以前に開始された改善措置を終了するなどの改善措置の少なくとも一部を実行することができる。一例では、サブシステムモニタ150は、サブシステム170をブラックリスト180に追加する際に、サブシステム170を停止させる。その場合、改善タイマは、所望のサスペンド期間に等しい改善時間をカウントアウトするために使用されてもよく、その満了時に、ブラックリストマネージャ160はサブシステム170を再開することができる。別の例では、サブシステム170がブラックリストに載っているとき、ブラックリストマネージャ160は、改善時間が満了した後、サブシステム170を(例えば、サブシステム170の一部またはすべてのプロセスを打ち切ることによって)打ち切り得る。このようにして、ストレージ保護システム100は、サブシステム170が、シャットダウン前のタスクを実行することによって、または自身をシャットダウンすることによってなど、改善時間中に自身のシャットダウンに備えることができるようにすることができる。別の例では、ブラックリストマネージャ160は、改善時間が経過した後、コンピューティングデバイス120を全体として再起動してもよいし、コンピューティングデバイス120上のオペレーティングシステムをリセットしてもよい。したがって、改善タイマの使用は、コンピューティングデバイス120の様々なサブシステム170がシャットダウンの準備をすることを可能にし得る。このように、改善時間は、閾値時間として作用してもよく、その後、何らかの改善措置が実行または終了されてもよい。
タイマは、様々な方法で実装することができる。例えば、タイマは、カウントダウンタイマとして実装されてもよい。例えば、サブシステム170がブラックリスト180上に配置されるか、または既にブラックリスト180上にある間に違反を犯した場合、カウントダウンタイマとして実装された関連する解放タイマは、解放時間を表す値で初期化されてよく、時間が経過すると下方にカウントされてよい。リリースタイマがゼロに達すると、リリースタイマおよび関連するリリース時間が満了したとみなされ、ブラックリストマネージャ160は、そのような満了に応答して、ブラックリスト180からサブシステム170を削除してもよい。別の例として、サブシステム170がブラックリスト180に置かれるとき、カウントダウンタイマとして実装される関連する改善タイマは、改善時間を表す値で初期化されてもよく、時間の経過とともに下方にカウントされてもよい。改善タイマがゼロに達すると、改善タイマおよび関連する改善時間は、期限切れとみなされてもよく、期限切れに応答して、ブラックリストマネージャ160は、(たとえば、サブシステム170を終了する、またはコンピューティングデバイス120を再起動する)改善アクションを実行してもよく、または(たとえば、中断後にサブシステム170を再開する)改善アクションを終了してもよい。
しかしながら、いくつかの実装では、タイマは上向きにカウントされてもよい。この一例では、サブシステム170がブラックリスト180に載せられたとき、または既にブラックリスト180に載っている間に違反を犯したとき、上向きカウントタイマとして実装された関連リリースタイマは、ゼロの値で初期化されてよく、時間の経過とともにリリース時間に向かって上向きにカウントされてよい。リリースタイマがリリース時間に達すると、リリースタイマおよび関連するリリース時間は期限切れとみなされ、ブラックリストマネージャ160は、そのような期限切れに応答してブラックリスト180からサブシステム170を除去してもよい。別の例として、サブシステム170がブラックリスト180に配置されるとき、上向きカウントタイマとして実装される関連する改善タイマは、ゼロの値で初期化されてもよく、時間の経過とともに改善時間まで上向きにカウントされてもよい。改善タイマが改善時間に達すると、改善タイマおよび改善時間は期限切れとみなされ、期限切れに応答して、ブラックリストマネージャ160は改善措置を実行または結論付けてもよい。
各タイマは、そのタイマに関連する確立された時間単位に基づいて時間をカウントしてもよい。例えば、タイマは、時間を秒単位で表してもよく、秒単位で下降または上昇をカウントしてもよい。別の例として、タイマは時間をインターバルで表してもよく、その場合、タイマはインターバルの経過に従って下降または上昇をカウントしてもよい。時間測定の様々な単位がタイマによって使用されてもよいことは理解されるであろう。
図2は、本発明の特定の実施態様による、ストレージ保護システム100が実行可能なコンピューティングデバイス120、具体的には、ユーティリティメータ200のアーキテクチャ図である。例えば、限定するわけではないが、ユーティリティメータ200は、水道メータ、ガスメータ、または敷地220上のリソース210の消費を測定する他のタイプのメータであってもよい。この目的のために、ユーティリティメータ200は、リソース210の使用を示す信号を検出し、その信号に基づいて、敷地220上のリソース210の使用を決定する、計量エンジン205を含んでもよい。他のタイプのコンピューティングデバイス120と同様に、ユーティリティメータ200は、処理ユニット130、メモリ140、およびストレージ110を含んでもよく、これらは、システムバス230を介して互いに接続されてもよい。例えば、限定するわけではないが、メモリ140はRAMであってもよく、ストレージ110は、NANDメモリまたはeMMCなどのフラッシュストレージであってもよい。図2にはユーティリティメータ200が示されているが、コンピューティングデバイス120はユーティリティメータ200に限定されないことは理解されよう。むしろ、例えば、コンピューティングデバイス120は、コレクタ、ゲートウェイ、またはユーティリティメータ200以外の別のコンピューティングデバイスであってもよい。
図3は、本発明の特定の実施態様による、ストレージデバイス110の寿命を保護するためにストレージデバイス110への書き込みを管理するための方法300のフロー図である。この方法300は、コンピューティングデバイス120によって実行されてもよい。例えば、方法300は、コンピューティングデバイス120上の処理ユニット130によって実行可能な、サブシステムモニタ150に統合されたプログラムコードとして実装されてもよい。いくつかの実装では、この方法300または同様のもののインスタンスは、書き込みがサブシステム170によって試行されるたびに実行されてもよい。さらに、または代替的に、図3には示されていないが、方法300または同様のものは、定期的に(例えば、数秒ごとに)実行されてもよい。
方法300の最初の実行(例えば、コンピューティングデバイス120の再起動後に方法300が稼働する最初の時)の前に、コンピューティングデバイス120にインストールされた各サブシステム170に対してそれぞれの書き込み閾値が確立され得る。例えば、様々な書き込み閾値は、ストレージ110に符号化され、サブシステムモニタ150によってアクセス可能であってよい。書き込み閾値が動的である場合、書き込み閾値は必要に応じて更新されてもよく、方法300の将来の各実行では、更新された書き込み閾値が使用されてもよい。いくつかの実施形態では、時間は、それぞれ数秒のような間隔に分割され、書き込み閾値は、対応するサブシステム170が所定の間隔において書き込み閾値を満たす場合に改善のリスクを負うように、個別的に各間隔に適用される。
いくつかの実装では、ストレージ保護システム100は、完全にメモリ140で実行され、ストレージ保護システム100を実装するプログラムコードは、方法300の実行に先立って検証され得る。そのような実装では、コンピューティングデバイス120は、方法300の最初の実行に先立って、書き込みを管理するこの方法300を実装するプログラムコードをメモリ140にロードしてもよい。
さらに、方法300の最初の実行に先立って、サブシステムモニタ150は、ブラックリスト180を確立してもよく、これは、過去に(たとえば、それぞれの書き込み閾値を超えることによって)悪い振る舞いをしたサブシステム170のリストであってよく、したがって罰則の対象になっている。ブラックリスト180は、方法300の最初の実行が開始されたときに空であってもよいが、ブラックリスト180は、(例えば、メモリ140に)保存され、方法300の様々な実行にわたって利用されることがある。ブラックリスト180上の各サブシステム170は、リリースタイマまたは改善タイマなどの少なくとも1つのそれぞれのタイマと関連付けられてもよい。
図3に示すように、方法300のブロック305で、サブシステムモニタ150は、書き込みの試み(すなわち、ストレージ110への書き込みの試み)を検出する。例えば、メモリ140への書き込みは、書き込まれたメモリコンテンツが典型的にはその後ストレージ110に同期されるため、書き込み試行とみなすことができる。メモリの単一のブロックに書き込む各試行は、メモリの複数のブロックに書き込む試みが複数の書き込み試行、具体的には、ブロックごとに1つの書き込み試行と見なされる場合がある。
ブロック310において、サブシステムモニタ150は、書き込みの試みを実行したサブシステム170を識別する。どのサブシステム170が書き込みを試みたかを決定するために使用される技術は、サブシステム170がどのように定義されるかに部分的に基づいてもよい。例えば、サブシステム170がファイルのセットを含むように定義されている場合、サブシステムモニタ150は、書き込まれるファイルに基づいて書き込みの試みを実行したサブシステム170を識別してもよい。別の例として、サブシステム170がプロセスのセットを含むように定義される場合、サブシステムモニタ150は、書き込みの試みを実行するプロセスに基づいて、書き込みの試みを実行したサブシステム170を特定してもよい。
ブロック310において、サブシステムモニタ150は、書き込み試行を実行したサブシステム170の書き込み試行を記述する統計情報を更新する。たとえば、いくつかの実装では、サブシステムモニタ150は、アクティブな間隔(すなわち、開始され、まだ終了していない間隔)中に各サブシステム170によって行われた書き込み試行のカウントを維持する。いくつかの実装では、例えば、サブシステム170の書き込み試行または書き込みサイクル(すなわち、ストレージ110に実際に同期されたメモリブロック)の全時間総数、書き込み試行のレートなど、またはアクティブインターバルにおける書き込み試行の先行インターバル(すなわち、アクティブインターバルより前に発生したインターバル)との比較など、他の統計が維持されてもよい。これらの統計は、本明細書で説明するように使用するため、およびいくつかの実装では、デバッグ、報告、または他の目的のためにログに記録されてもよい。
いくつかの実装では、コンピューティングデバイス120は、様々なコンピューティングデバイス120を管理するための集中型ロケーションであるヘッドエンドシステムに統計情報を通信する。例えば、ヘッドエンドシステムは、様々なコンピューティングデバイス120から受信した統計を集約してもよく、追加的または代替的に、ヘッドエンドシステムは、ヘッドエンドシステムに報告する他のコンピューティングデバイス120の統計と比較して、統計に基づいてコンピューティングデバイス120が異常な態度で動作しているかどうかを識別することができる。
判定ブロック315で、サブシステムモニタ150は、サブシステム170がブラックリスト180上にあるかどうかを決定する。サブシステム170がブラックリスト180上にある場合(すなわち、サブシステム170が以前にブラックリスト180上に置かれ、まだブラックリスト180から削除されていない場合)、ブロック320で、サブシステムモニタ150は書き込み試行をブロックする。この場合、サブシステムモニタ150は、アクティブインターバル中に発生するサブシステム170のすべての書き込み試行をブロックしてもよい。より具体的には、例えば、書き込み試行をブロックするために、サブシステムモニタ150は、コンピューティングデバイス120のカーネルが、書き込み試行中にサブシステム170が書き込んだメモリコンテンツをストレージ110に同期させることを許さない。いくつかの実装では、サブシステムモニタ150は、書き込み試行がブロックされたことをサブシステム170に通知する(例えば、サブシステム170内のプロセスに通知する)。その場合、方法300はその後終了し、サブシステム170による次の書き込み試行の際に再開することができる。
サブシステム170がブラックリスト180上にない場合、判定ブロック325において、サブシステムモニタ150は、サブシステム170がホワイトリスト190上にあるかどうかを決定する。サブシステムがホワイトリスト190上にある場合、ブロック330において、サブシステムモニタ150は、サブシステム170がストレージ110に書き込むことを許可する。具体的には、1つの実装では、サブシステムモニタ150は書き込みプロセスを妨害しないので、カーネルがサブシステム170によって書き込まれたメモリコンテンツをストレージ110に同期させることができる。別の実装では、サブシステムモニタ150は、書き込みの試みでサブシステム170によって書き込まれたメモリコンテンツをカーネルが同期させるよう要求する。その後、方法300は終了し、サブシステム170による次の書き込み試行時に再開することができる。
サブシステム170がブラックリスト180にもホワイトリスト190にもない場合、方法300は判定ブロック335に進む。判定ブロック335において、サブシステムモニタ150は、書き込みの試みが完了した場合(例えば、ストレージ110に同期した場合)、サブシステム170がアクティブ区間のその書き込み閾値を満たす(例えば、同等または超える)原因となるかどうかを決定する。書き込みの試みがサブシステム170にその書き込み閾値を満たさせないであろう場合、方法300はブロック340に進み、サブシステムモニタ150は、サブシステム170がストレージ110への書き込み試行を完了することを許可する。その後、方法300は終了し、サブシステム170による次の書き込み試行時に再開することができる。
しかしながら、サブシステム170がブラックリスト180およびホワイトリスト190のいずれにもなく、書き込み試行が、サブシステム170がアクティブ間隔のその書き込み閾値を満たす原因となる場合、方法300は、ブロック345に進む。ブロック345において、これが、初期化以来(たとえば、コンピューティングデバイス120が最後に再起動してから)サブシステム170がその書き込み閾値を満たした最初の時間である場合、サブシステムモニタ150は、サブシステム170がその書き込み閾値を満たした最初の時間としてこれをログすることができる。得られたログは、デバッグ、報告、または他の目的のために使用されてもよい。いくつかの実装では、ログは、さらなる使用のために、ヘッドエンドシステムなどの集中型ロケーションに送信されてもよい。
図3には示されていないが、いくつかの実装では、これがサブシステムのその書き込み閾値を満たす最初の時間である場合、違反は許されるかもしれない。その場合、サブシステムモニタ150は、書き込みの試みを許可してもよく、したがって、サブシステム170によって書き込まれたメモリコンテンツが、ストレージ110に同期されるようにする。しかし、図3の例示的な方法300では、これがサブシステムの書き込み閾値を満たす最初の時間であるかどうかの判断は、ロギング目的のためだけに使用され、書き込みの試みは、以下に説明するように依然としてブロックされる可能性がある。
いくつかの実装では、サブシステム170が過去にその書き込み閾値を満たしたかどうかにかかわらず、判定ブロック350において、サブシステムモニタ150は、書き込み試行が完了した場合、サブシステム170がアクティブインターバルの第2の書き込み閾値を満たすようになるかどうかを決定する。書き込み閾値と同様に、第2の書き込み閾値は、サブシステム170に関連付けられ、したがって、あるサブシステム170から別のサブシステムに変化してもよい。第2の書き込み閾値は、サブシステム170の書き込み閾値より高くてもよく、より具体的には、書き込み閾値に基づいてもよい。例えば、第2の書き込み閾値は、書き込み閾値の百分率であってよく、その百分率は、百分率よりも大きい。一例では、第2の書き込み閾値は、書き込み閾値の125%である。さらに、または代替的に、第2の書き込み閾値は、アクティブ間隔を含むがより長い拡張間隔に適用される。例えば、書き込み閾値が1時間の長さを有する間隔に適用される場合、第2の書き込み閾値は1日の延長された間隔に適用されてもよい。この場合、書き込みがより長い期間にわたって制限されたままである限り、第2の書き込み閾値を使用して、時折の過剰書き込みのバーストを許容することができる。
書き込み試行が、サブシステム170に、適用可能な期間(たとえば、アクティブ間隔またはアクティブ拡張間隔)にわたってその第2の書き込み閾値を満たさせないであろう場合、ブロック355において、サブシステムモニタ150は、書き込み試行の進行を許可し、したがって、書き込み試行にサブシステム170によって書き込まれたメモリコンテンツは、ストレージ110に同期され得る。しかしながら、書き込み試行が、サブシステム170が適用可能な期間にわたってその第2の書き込み閾値を満たすことになる場合、方法300は、判定ブロック360に進む。
いくつかの実装は、サブシステム170が、ブラックリストに載るリスクまたは書き込み試行がブロックされるリスクなしに、その書き込み閾値を少々超えることを可能にするために、上記のような第2の書き込み閾値を利用する。しかしながら、他の実装は、この第2の閾値を利用する必要がないことが理解されよう。その場合、判定ブロック350はスキップされてもよく、方法は、ブロック345から判定ブロック360に進行してもよい。
より一般的には、ストレージ保護システム100は、サブシステム170をブラックリスト化するか、サブシステム170がストレージ110に書き込むのをブロックするか、またはその両方を行うかを決定するために、一組のブロッキング基準を利用することができる。一実装では、ブロッキング基準は、サブシステム170がその書き込み閾値を満たす場合にのみ満たされ、ブロッキング基準が満たされることに応答して、サブシステムモニタ150は、サブシステム170をブラックリスト化し、書き込み試行をブロックする。別の実装では、サブシステム170がその第2の書き込み閾値を満たす場合にのみ、ブロッキング基準が満たされ、ブロッキング基準が満たされることに応答して、サブシステムモニタ150はサブシステム170をブラックリスト化し、書き込み試行をブロックする。さらに別の実装では、ブロッキング基準は、サブシステム170が時間枠内(たとえば、1週間ごとまたはコンピューティングデバイス120が最後に再起動したときから)にその書き込み閾値を所定回数満たすか、または時間枠内にその第2の書き込み閾値を所定回数満たす場合にのみ満たされ、かかるブロッキング基準が満たされているのに応じて、サブシステムモニタはサブシステム170をブラックリストに入れ、書き込み試行をブロックする。
判定ブロック360において、サブシステムモニタ150は、違反閾値が、現在の違反によって(すなわち、サブシステム170が書き込み閾値を超える原因となった書き込み試行によって)満たされたか否かを決定する。いくつかの実装では、違反閾値は、サブシステム170がブラックリスト180に追加される前に、ブラックリスト180上にないサブシステム170によって許容される違反の数であるか、またはそれを表す。違反閾値は、最後の1日以上、最後の1週間以上、設定された数の間隔以上、またはコンピューティングデバイス120の最後の再起動以降など、確立された時間枠に適用されてもよい。その場合、サブシステムモニタ150は、サブシステム170がその時間枠内で違反閾値を満たしたか否かを判断する。違反閾値が満たされていない(例えば、等しいかまたは超えている)と判定ブロック360で決定された場合、サブシステムモニタ150は、ブロック365で書き込み試行を許可する。そうでなければ、サブシステム170が違反閾値を満たした場合、方法300は、ブロック370に進む。
いくつかの実装では、違反閾値は使用されない。違反閾値の欠如は、違反閾値として1の値を使用することと論理的に等価であってもよい。その場合、判定ブロック360はスキップされてもよく、方法300は判定ブロック350からブロック370まで進行してもよい。
ブロック370において、サブシステムモニタ150は、サブシステム170をブラックリスト180に追加し、サブシステム170に関連する各タイマを初期化する。上述したように、そのようなタイマは、リリースタイマおよび改善タイマのうちの1つまたは両方を含むことができる。
判定ブロック375において、サブシステムモニタ150は、サブシステム170の違反を処理するために、書き込み試行をブロックすることに加えて、1つ以上の改善アクションを決定する。この決定は、ストレージ保護システム100においてサブシステム170に関連する以前に確立された設定に基づくことができる。例えば、設定は、サブシステム170がブラックリストに載ったときに、サブシステム170を中断(すなわち、一時停止)すること、サブシステム170を終了(すなわち、その様々なプロセスを停止)すること、または他の何らかの改善措置を取ることを示してもよい。いくつかの実装では、各サブシステム170は、改善措置のセットと関連付けられてもよく、それは空のセットであってもよいし、サブシステム170がブラックリスト180に加えられたときにトリガされる1つまたは複数の改善措置を含んでもよい。どの改善措置を実行するかを決定するために、サブシステムモニタ150は、ストレージ保護システム100の設定をチェックして、どの改善措置がサブシステム170に関連付けられるかを決定してもよい。いくつかの実装では、サブシステムモニタ150は、設定に示された各改善措置を実行する。そのような改善措置が、単に書き込み試行をブロックする以外にサブシステム170に関連付けられていない場合、方法300は、ブロック390にスキップして進むことができる。
図3の例では、書き込み試行をブロックする以外に、サブシステム170を一時停止することとサブシステム170を終了させることの2つの改善措置のみが利用可能である。サブシステムモニタ150がサブシステム170を終了させることを決定した場合、ブロック380において、サブシステムモニタ150は、サブシステム170を終了させる。より具体的には、サブシステム170が複数のプロセスを含む場合、サブシステムモニタ150のいくつかの実装は、書き込み試行を行ったプロセスのみを打ち切り得るが、他の実装は、サブシステム170内の複数のプロセスまたはすべてのプロセスを打ち切り得る。そのようなプロセスは互いに依存している可能性があるため、サブシステム170のすべてのプロセスを打ち切ることが有益である場合がある。その後、方法300は、ブロック390にスキップしてもよい。しかしながら、サブシステムモニタ150がサブシステム170をサスペンドすることを決定した場合、ブロック385において、サブシステムモニタ150は、サブシステム170をサスペンドする。より具体的には、サブシステム170が複数のプロセスを含む場合、いくつかの実装は、書き込み試行を行ったプロセスのみをサスペンドし、他の実装は、サブシステム170内の複数のプロセスまたはすべてのプロセスをサスペンドすることができる。そのようなプロセスは互いに依存している可能性があるため、サブシステム170のすべてのプロセスをサスペンドすることが有益である場合がある。サブシステム170をサスペンドする場合、サブシステム170は、改善時間をカウントする改善タイマと関連付けられてもよく、その満了時にサブシステム170が再開されることになる。その後、方法300は、ブロック390に進んでもよい。
ブロック390において、サブシステムモニタ150は、書き込み試行をブロックする。言い換えれば、サブシステムモニタ150は、アクティブインターバル中にサブシステム170によって書き込まれたメモリコンテンツがストレージ110に同期されないようにブロックしてもよい。例えば、サブシステムモニタ150は、カーネルがメモリコンテンツを同期しないことを要求してもよく、またはカーネルが要求に応じてのみこの同期を実行する実装では、サブシステムモニタ150は、カーネルがメモリコンテンツを同期することを要求しないことを単に選択してもよい。いくつかの実装では、サブシステムモニタ150は、取られた任意の改善措置(例えば、停止、ブロックされた書き込み試行)をサブシステム170に通知してもよい。その後、方法300は終了し、サブシステム170による次の書き込み試行時に再開することができる。
図4は、本発明の特定の実施態様による、ストレージデバイス110の寿命を保護するように、違反を犯したサブシステム170のブラックリスト180を管理する方法400のフロー図である。上述したように、サブシステム170は、それぞれの書き込み閾値を満たす(たとえば、等しいかまたは超える)ためなどに、ブラックリスト180に追加される場合がある。図4の方法400または同様のものは、例えば、特定の条件が満たされたときにサブシステム170をブラックリスト180から削除することを含む、そのブラックリスト180を管理するために使用されてもよい。いくつかの実装では、図4に示すようなブラックリスト180を管理する方法400は、図3に示すような書き込みを管理する方法300と並行して実行されてもよい。例えばいくつかの実装では、図4の方法400または同様の方法は、書き込みを管理する方法300によって移入されるブラックリスト180を管理するために、1秒に1回または他の何らかの周期的スケジュールで実行されてもよく、書き込みを管理する方法300は書き込み試行が発生すると実行されてもよい。
図4の方法400は、ブラックリスト180上のサブシステム170を反復してもよい。図4に示すように、判定ブロック405において、ブラックリストマネージャ160は、方法400の現在の実行において考慮されるべきブラックリスト180上のサブシステム170がこれ以上残っているかどうかを決定する。考慮すべきサブシステム170が残っていない場合、方法400は、ブロック410で終了してもよい。例えば、ブラックリスト180が空である場合、またはブラックリスト180のすべてのサブシステム170が既に考慮されたように1つ以上の反復が既に実行された場合、考慮すべきサブシステム170が残っていない可能性がある。
しかしながら、1つ以上のサブシステム170が検討されるために残っている場合、ブロック415において、ブラックリストマネージャ160は、この反復で検討するサブシステム170を選択することができる。
上述したように、各サブシステム170は、リリースタイマ、改善タイマ、またはその両方を含む少なくとも1つのタイマと関連付けられてもよい。判定ブロック420において、選択されたサブシステム170がリリースタイマを有するかどうかが決定され得る。サブシステム170がリリースタイマを有する場合、方法400は判定ブロック425に進み、そうでない場合、サブシステム170がリリースタイマを有しない場合、方法400は判定ブロック440にスキップして進む。
サブシステム170がリリースタイマを有する場合、判定ブロック425で、ブラックリストマネージャ160は、リリースタイマが期限切れになったかどうかを決定する。いくつかの実装では、リリースタイマは、サブシステム170が違反を犯した度にリセットされており、したがって、リリースタイマは、最後の違反から関連するリリース時間が経過した後にのみ、失効している。
リリースタイマが満了した場合、ブロック430において、ブラックリストマネージャ160は、ブラックリスト180からサブシステム170を削除し、方法400はブロック405に戻り、方法400の現在の実行において考慮すべきサブシステム170がさらに残っているかどうかを決定する。
しかしながら、リリースタイマが満了していない場合、ブロック435において、ブラックリストマネージャ160は、方法400の現在の実行と方法400の最後の実行との間で経過した時間だけ、リリースタイマをデクリメントする。例えば、リリースタイマが時間を秒単位で維持し、方法400が1秒に1回実行される場合、リリースタイマは、経過した時間を表すために1だけデクリメントされ得る。次いで、方法400は、適用可能であれば、改善タイマを検討するために判定ブロック440に進む。
判定ブロック440で、ブラックリストマネージャ160は、サブシステム170が改善タイマと関連付けられているかどうかを決定する。サブシステム170が改善タイマに関連付けられていない場合、方法はブロック405に戻り、検討のために任意の追加のサブシステム170が残っているかどうかを判断することができる。しかし、サブシステム170が改善タイマと関連付けられている場合、判定ブロック445で、ブラックリストマネージャ160は、改善タイマが期限切れになったかどうかを決定する。
改善タイマが期限切れでない場合、ブロック455において、ブラックリストマネージャ160は、方法400の現在の実行と方法400の最後の実行との間に経過した時間だけ、改善タイマをデクリメントしてもよい。その後、方法400は、ブロック405に戻り、任意のサブシステム170が検討のために残っているかどうかを判断してもよい。
しかしながら、改善タイマが期限切れになった場合、ブロック450において、ブラックリストマネージャ160は、改善タイマに関連する時限アクションを実行する。たとえば、時限アクションがサスペンドからの復帰である場合、ブラックリストマネージャ160は、サスペンドされていたサブシステム170のプロセスを再開することができる。計時されたアクションが、終了した後のサブシステム170の再スタートである場合、ブラックリストマネージャ160は、終了したサブシステム170のプロセスを再スタートさせてもよい。サブシステム170の再開または再起動の場合、ブラックリストマネージャ160は、サブシステム170をブラックリスト180から削除してもよいし、サブシステム170がリリースタイマに関連している場合、リリースタイマをリセットしてサブシステム170がブラックリスト180から削除される機会を与えるようにしてもよい。時限アクションがコンピューティングデバイス120全体の再起動である場合、ブラックリストマネージャ160は、コンピューティングデバイス120のその再起動を開始することができる。
いくつかの実装では、コンピューティングデバイス120を再起動すると、ブラックリスト180が消去される。たとえば、ストレージ保護システム100は、揮発性であってもよいメモリ140で実行されてもよく、したがって、コンピューティングデバイス120の再起動は、メモリ140およびしたがってブラックリスト180をクリアすることができる。あるいは、ブラックリスト180がストレージ110に格納される場合、ブラックリストマネージャ160は、いくつかの実装において、コンピューティングデバイス120を再起動する前に、ブラックリスト180をクリアしてもよい。
その後、方法400は、ブロック405に戻り、検討のためにそれ以上のサブシステム170が残っているかどうかを判断する。
このように、本明細書で説明する実装は、サブシステム170ごとにストレージデバイス110の書き込みサイクルを制限することによって、ストレージデバイス110を保護する。様々なサブシステム170の書き込みを個別に管理することによって、ストレージ保護システム100は、あまりにも多くの書き込みを実行しているサブシステム170を特定し、そのようなサブシステムによって実行される書き込みを制限することができる。サブシステム170を個別にターゲットにすることは、場合によっては、ストレージデバイス110の寿命を経時的に維持しながら、コンピューティングデバイス120の残りの部分が通常通りに実行し続けることを可能にし得る。
請求された主題の徹底的な理解を提供するために、多数の具体的な詳細が本明細書に記載されている。しかしながら、当業者は、請求された主題がこれらの具体的な詳細なしに実施され得ることを理解するであろう。他の例では、当業者によって知られているであろう方法、装置、又はシステムは、クレームされた主題を不明瞭にしないように、詳細には記載されていない。
本明細書で議論される特徴は、任意の特定のハードウェアアーキテクチャまたは構成に限定されない。コンピューティングデバイスは、1つ以上の入力を条件とする結果を提供するコンポーネントの任意の好適な配置を含むことができる。好適なコンピューティング装置は、コンピューティングシステムを汎用コンピューティング装置から本主題の1つ以上の態様を実装する特殊コンピューティング装置へとプログラムまたは構成する格納ソフトウェア(すなわち、コンピュータシステムのメモリ上に格納されたコンピュータ可読命令)にアクセスする多目的マイクロプロセッサベースのコンピュータシステムを含んでいる。任意の適切なプログラミング、スクリプト、または他のタイプの言語または言語の組み合わせが、コンピューティング装置をプログラミングまたは構成する際に使用されるソフトウェアにおいて、本明細書に含まれる教示を実装するために使用されてもよい。
本明細書に開示される方法の態様は、そのようなコンピューティングデバイスの動作において実行されてもよい。上記の例で提示されたブロックの順序は、変化させることができ、例えば、ブロックは、再順序付けされ、結合され、および/またはサブブロックに分割されることができる。特定のブロックまたはプロセスは、並行して実行することができる。
本明細書における「に適合された」又は「に構成された」の使用は、追加のタスク又はステップを実行するように適合又は構成された装置を妨げない、開放的かつ包括的な言語として意図されている。さらに、「に基づく」の使用は、プロセス、ステップ、計算、または他の動作が、1つまたは複数の言及された条件または値に「基づく」場合、実際には、言及されたものを超える追加の条件または値に基づくことができるという意味で、開放的で包括的であることを意図している。本明細書に含まれる見出し、リスト、および番号付けは、説明を容易にするためだけのものであり、限定することを意図していない。
本主題は、その特定の態様に関して詳細に説明されてきたが、当業者は、前述の理解を得た時点で、そのような態様に対する変更、変形、及び同等物を容易に作り出すことができることが理解されよう。したがって、本開示は、限定ではなく例示の目的で提示されており、当業者に容易に明らかになるような本主題に対する変更、変形、および/または追加を含めることを排除するものではないことを理解されたい。

Claims (20)

  1. ストレージデバイスへの書き込みサイクルを制限する方法であって、
    コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの第1のセットの書き込みの第1のカウントを追跡するステップと、
    前記第1のカウントが前記第1のサブシステムの書き込み閾値を満たすことを判定するステップと、
    前記第1のカウントが前記第1のサブシステムの書き込み閾値を超えることに基づいて、前記第1のサブシステムによってブロッキング基準が満たされることを判定するステップと、
    コンピューティングデバイスの第2のサブシステムによってブロッキング基準が満たされないことを判定するステップと、
    前記ブロッキング基準が前記第1のサブシステムによって満たされることに基づいて、前記第1のセットの書き込みが前記ストレージデバイスに同期されることをブロックするステップと、及び、
    前記ブロッキング基準が第2のサブシステムによって満たされないことに基づいて、第2のサブシステムのメモリコンテンツをストレージデバイスに同期させるステップと
    を含む、方法。
  2. 前記第1のサブシステムについて前記ブロッキング基準が満たされることを判定することは、前記第1のサブシステムが過去に前記書き込み閾値を超えたことを判定することを、更に含む、請求項1に記載の方法。
  3. 前記第1のサブシステムについて前記ブロッキング基準が満たされることを判定することは、前記第1のカウントが前記書き込み閾値よりも高い第2の書き込み閾値を満たすことを判定することを、更に含む、請求項1に記載の方法。
  4. 更に、
    前記第1のカウントが前記書き込み閾値を満たすことに基づいて、前記第1のサブシステムのステータスをブラックリスト化に変更するステップと、及び、
    前記第1のサブシステムがブラックリスト化のステータスを有する間、前記第1のサブシステムによって実行される追加の書き込みが前記ストレージデバイスに同期されるのをブロックするステップと
    を含む、請求項1に記載の方法。
  5. 更に、
    前記第1のサブシステムが前記ブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連するリリースタイマを初期化するステップと、及び、
    前記リリースタイマの期限切れに応答して、前記第1のサブシステムのステータスをブラックリスト化から変更するステップと
    を含む、請求項4に記載の方法。
  6. 更に、
    前記第1のサブシステムが前記ブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連付けられた改善タイマを初期化するステップと、及び、
    前記改善タイマの期限切れに応答して、改善アクションの少なくとも一部を実行するステップと
    を含む、請求項4に記載の方法。
  7. 改善タイマの期限切れに応答して、改善アクションの少なくとも一部を実行するステップは、改善タイマの期限切れに応答して、コンピューティングデバイスを再起動するステップを含む、
    請求項6に記載の方法。
  8. 前記改善タイマの期限切れに応答して、前記改善アクションの少なくとも一部を実行するステップは、前記改善タイマの期限切れに応答して、前記第1のサブシステムを終了させるステップを含む、
    請求項6に記載の方法。
  9. 更に、
    前記第1のサブシステムがブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムをサスペンドするステップ
    を含み、
    前記改善タイマの期限切れに応答して、前記改善アクションの少なくとも一部を実行するステップは、前記改善タイマの期限切れに応答して、前記第1のサブシステムを再開するステップを含む、
    請求項6に記載の方法。
  10. 前記第2のサブシステムについて前記ブロッキング基準が満たされないことを判定するステップは、前記第2のサブシステムがホワイトリスト上にあることを判定するステップを含む、請求項1に記載の方法。
  11. 前記第1のサブシステムは、1つまたは複数のプロセスのセットとして定義される、
    請求項1に記載の方法。
  12. 前記第1のサブシステムは、1つまたは複数のファイルのセットとして定義される、
    請求項1に記載の方法。
  13. ストレージデバイスへの書き込みサイクルを制限するためのコンピュータプログラムプロダクトであって、該コンピュータプログラムプロダクトはプログラム命令をその上に具現化したコンピュータ可読記憶媒体を含み、プロセッサにより実行可能な該プログラム命令は該プロセッサに方法を実行させるものであり、
    該方法は、
    コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの第1のセットの書き込みの第1のカウントを追跡するステップと、
    前記第1のカウントが前記第1のサブシステムの書き込み閾値を満たすことを判定するステップと、
    前記第1のカウントが前記第1のサブシステムの書き込み閾値を超えることに基づいて、前記第1のサブシステムによってブロッキング基準が満たされることを判定するステップと、
    コンピューティングデバイスの第2のサブシステムによってブロッキング基準が満たされないことを判定するステップと、
    前記第1のサブシステムによって前記ブロッキング基準が満たされることに基づいて、前記第1のセットの書き込みが前記ストレージデバイスに同期されることをブロックするステップと、及び、
    前記ブロッキング基準が前記第2のサブシステムによって満たされないことに基づいて、前記第2のサブシステムのメモリコンテンツを前記ストレージデバイスに同期させるステップと
    を含む、コンピュータプログラムプロダクト。
  14. 前記方法は、更に、
    前記第1のカウントが前記書き込み閾値を満たすことに基づいて、前記第1のサブシステムのステータスをブラックリストに変更すること、および
    前記第1のサブシステムが前記ブラックリストに登録されたステータスを有する間、前記第1のサブシステムによって実行される追加の書き込みが前記ストレージデバイスに同期されるのをブロックするステップと
    を含む、
    請求項13に記載のコンピュータプログラムプロダクト。
  15. 前記方法は、更に、
    前記第1のサブシステムがブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連するリリースタイマを初期化するステップと、及び、
    前記リリースタイマの期限切れに応答して、前記第1のサブシステムのステータスをブラックリスト化から変更するステップと
    を含む、請求項14に記載のコンピュータプログラムプロダクト。
  16. 前記方法は、更に、
    前記第1のサブシステムがブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連する改善タイマを初期化するステップと、及び、
    前記改善タイマの期限切れに応答して、改善アクションの少なくとも一部を実行するステップと
    を含む、請求項14に記載のコンピュータプログラムプロダクト。
  17. コンピューティングデバイスであって、
    コンピュータ可読命令を実行するように構成されているプロセッサと、及び、
    プロセッサによって実行されたときに、プロセッサに動作を実行させるコンピュータ可読命令を格納するように構成されているメモリと
    を含み、
    前記動作は、
    コンピューティングデバイスの第1のサブシステムによって実行されるメモリへの第1のセットの書き込みの第1のカウントを追跡するステップと、
    前記第1のカウントが前記第1のサブシステムの書き込み閾値を満たすことを判定するステップと、
    前記第1のカウントが前記第1のサブシステムの書き込み閾値を超えることに基づいて、前記第1のサブシステムによってブロッキング基準が満たされることを判定するステップと、
    コンピューティングデバイスの第2のサブシステムによってブロッキング基準が満たされないことを判定するステップと、
    前記第1のサブシステムによって前記ブロッキング基準が満たされることに基づいて、前記第1のセットの書き込みが前記ストレージデバイスに同期されることをブロックするステップと、及び、
    前記第2のサブシステムによって前記ブロッキング基準が満たされないことに基づいて、前記第2のサブシステムのメモリコンテンツを前記ストレージデバイスに同期させるステップと
    を含む、コンピューティングデバイス。
  18. 前記動作は、更に、
    前記第1のカウントが前記書き込み閾値を満たすことに基づいて、前記第1のサブシステムのステータスをブラックリスト化に変更するステップと、及び、
    前記第1のサブシステムが前記ブラックリスト化のステータスを有する間、前記第1のサブシステムによって実行される追加の書き込みが前記ストレージデバイスに同期されることをブロックするステップと
    を含む、請求項17に記載のコンピューティングデバイス。
  19. 前記動作は、更に、
    前記第1のサブシステムが前記ブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連するリリースタイマを初期化するステップと、及び、
    前記リリースタイマの期限切れに応答して、前記第1のサブシステムのステータスをブラックリスト化から変更するステップと
    を含む、請求項18に記載のコンピューティングデバイス。
  20. 前記動作は、更に、
    前記第1のサブシステムがブラックリスト化のステータスを有することに基づいて、前記第1のサブシステムに関連する改善タイマを初期化するステップと、及び、
    前記改善タイマの期限切れに応答して、改善アクションの少なくとも一部を実行するステップと
    を含む、請求項18に記載のコンピューティングデバイス。
JP2022520486A 2019-10-03 2020-09-29 書き込み回数制限による不揮発性メモリの長寿命化 Pending JP2022550462A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/592,196 US11169713B2 (en) 2019-10-03 2019-10-03 Restricting write cycles to extend the lifetime of nonvolatile memory
US16/592,196 2019-10-03
PCT/US2020/053211 WO2021067232A1 (en) 2019-10-03 2020-09-29 Restricting write cycles to extend the lifetime of nonvolatile memory

Publications (1)

Publication Number Publication Date
JP2022550462A true JP2022550462A (ja) 2022-12-01

Family

ID=72840670

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022520486A Pending JP2022550462A (ja) 2019-10-03 2020-09-29 書き込み回数制限による不揮発性メモリの長寿命化

Country Status (6)

Country Link
US (1) US11169713B2 (ja)
EP (1) EP4038612B1 (ja)
JP (1) JP2022550462A (ja)
AU (1) AU2020357519A1 (ja)
CA (1) CA3156152A1 (ja)
WO (1) WO2021067232A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11334279B2 (en) * 2019-11-14 2022-05-17 Western Digital Technologies, Inc. Hierarchical blacklisting of storage system components
US11314431B2 (en) 2019-11-14 2022-04-26 Western Digital Technologies, Inc. Distributed data blocks using storage path cost values
US11455283B2 (en) * 2020-04-14 2022-09-27 Sap Se Candidate element selection using significance metric values
CN116166194B (zh) * 2023-01-16 2023-11-03 广州辰创科技发展有限公司 一种装备保障维修维护管理方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938254B1 (en) 1997-05-06 2005-08-30 Microsoft Corporation Controlling memory usage in systems having limited physical memory
US8661214B2 (en) * 2011-09-21 2014-02-25 Hitachi, Ltd. Storage system and data migration processing control method
US9032168B2 (en) 2012-05-31 2015-05-12 Htc Corporation Memory management methods and systems for mobile devices
US9112834B1 (en) * 2014-01-02 2015-08-18 Juniper Networks, Inc. Protecting sensitive web transactions using a communication channel associated with a user
US10365835B2 (en) * 2014-05-28 2019-07-30 Micron Technology, Inc. Apparatuses and methods for performing write count threshold wear leveling operations
US11245706B2 (en) * 2017-03-27 2022-02-08 Oracle Systems Corporation Protection configuration for application programming interfaces
US10462134B2 (en) * 2017-06-26 2019-10-29 Bank Of America Corporation Network device removal for access control and information security
US10620880B2 (en) * 2018-02-20 2020-04-14 International Business Machines Corporation Using a delay timer to delay code load operations to process queued write requests
US11176242B2 (en) * 2018-09-28 2021-11-16 Malwarebytes Inc. Intelligent pop-up blocker

Also Published As

Publication number Publication date
EP4038612B1 (en) 2023-06-21
WO2021067232A1 (en) 2021-04-08
EP4038612A1 (en) 2022-08-10
CA3156152A1 (en) 2021-04-08
US20210103391A1 (en) 2021-04-08
US11169713B2 (en) 2021-11-09
AU2020357519A1 (en) 2022-05-19

Similar Documents

Publication Publication Date Title
EP4038612B1 (en) Restricting write cycles to extend the lifetime of nonvolatile memory
US9372717B2 (en) Interruption of chip component managing tasks
US9529694B2 (en) Techniques for adaptive trace logging
US10705901B2 (en) System and method to control memory failure handling on double-data rate dual in-line memory modules via suspension of the collection of correctable read errors
KR20150055108A (ko) 실패들 사이의 평균 시간을 증가시키기 위해 멀티서브시스템 모바일 통신 디바이스에서 소프트웨어를 선제적으로 재시작하는 방법
US8868940B2 (en) Systems apparatus and method for blocking power transition in response to a comparision with present system state
CN112306732B (zh) 一种服务器中的自动纠错控制方法、装置、设备及介质
CN104461762A (zh) 一种设备死机后自动重启动方法
US8230446B2 (en) Providing a computing system with real-time capabilities
US9128754B2 (en) Resource starvation management in a computer system
Wang et al. SOL: Safe on-node learning in cloud platforms
US10387234B2 (en) Apparatus and method for controlling a power supply to processing circuitry to avoid a potential temporary insufficiency in supply of power
CN106326060A (zh) 基板管理控制系统及其方法
WO2017123225A1 (en) Management with respect to a basic input/output system policy
US20190266036A1 (en) System and Method to Control Memory Failure Handling on Double-Data Rate Dual In-Line Memory Modules
US10719243B2 (en) Techniques for preserving an expected lifespan of a non-volatile memory
Golnari et al. Error-tolerant processors: Formal specification and verification
WO2022095862A1 (zh) 调整线程优先级的方法、终端及计算机可读存储介质
CN115658356A (zh) 一种Linux系统中的看门狗喂狗方法及系统
Li et al. Ice: Collaborating memory and process management for user experience on resource-limited mobile devices
US20200371840A1 (en) System and methods for contingency budgeting for time-partitioned systems
KR102240996B1 (ko) 가상화 시스템에서의 입출력 완료 처리 방법 및 장치
CN113312136A (zh) 用于控制虚拟机的方法、电子设备和计算机程序产品
CN115576767A (zh) 一种慢盘模拟方法、装置、设备及介质
WO2024054450A1 (en) Systems, methods, and media for reducing the impact of drive parameter writes on solid state drive performance

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230828