JP2023536973A - ダイレクト・メモリ・アクセス(dma)マッピングされたページを移行する際の遅延の最小化 - Google Patents
ダイレクト・メモリ・アクセス(dma)マッピングされたページを移行する際の遅延の最小化 Download PDFInfo
- Publication number
- JP2023536973A JP2023536973A JP2023507753A JP2023507753A JP2023536973A JP 2023536973 A JP2023536973 A JP 2023536973A JP 2023507753 A JP2023507753 A JP 2023507753A JP 2023507753 A JP2023507753 A JP 2023507753A JP 2023536973 A JP2023536973 A JP 2023536973A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- dma
- computer
- program instructions
- memory pages
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 295
- 238000000034 method Methods 0.000 claims abstract description 76
- 230000008569 process Effects 0.000 claims abstract description 45
- 238000012545 processing Methods 0.000 claims description 89
- 238000004590 computer program Methods 0.000 claims description 33
- 230000004044 response Effects 0.000 claims description 18
- 230000001934 delay Effects 0.000 claims description 12
- 238000013507 mapping Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 15
- 238000007726 management method Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 239000000835 fiber Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012502 risk assessment Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Bus Control (AREA)
- Time-Division Multiplex Systems (AREA)
- Memory System (AREA)
Abstract
メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることが判定される。メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延がメモリ・ページのセット内の各メモリ・ページに対して同時に実行される。
Description
本発明は一般に、コンピュータ・システム・メモリ管理のための方法、システム、およびコンピュータ・プログラム製品に関する。より詳細には、本発明は、ダイレクト・メモリ・アクセス(DMA:Direct Memory Access)マッピングされたページを移行する際の遅延を最小化するための方法、システム、およびコンピュータ・プログラム製品に関する。
ページは物理メモリまたは仮想メモリの単位である。ハードウェアとオペレーティング・システムとの組み合わせの中には、1つのページ・サイズのみをサポートするものがあり、複数のページ・サイズ、たとえば、16キロバイト、64キロバイト、16メガバイト、64メガバイト、および16ギガバイトをサポートするものもある。セグメントは、1つまたは複数のページを含む物理メモリまたは仮想メモリの単位である。
DMAにより、特定のハードウェア・デバイスが物理システム・メモリに直接アクセスすることが可能になる。典型的には、プロセッサはデータ転送を開始した後、転送の進行中に他の動作を実行する。DMAアクセスのためのデバイスのマッピングとは、システム・メモリのバッファを割り当て、バッファ内のシステム・メモリ・アドレスの範囲をデバイスのメモリ内の対応するアドレスに関連付けることを意味する。その結果、割り当てられたシステム・メモリ・アドレス範囲内のアドレスに対する読み出しまたは書き込みは、実際には代わりにDMAマッピングされたデバイスにアクセスする。
DMA動作が完了したことをプロセッサに通知するために割り込みが使用されることがよくある。しかしながら、割り込みが生成されたときに実際には動作が完了していない場合があり、一部のデータがまだ宛先に到着していない場合がある。このため、システム・メモリを再割り当てする場合、一部のコンピュータ・システムは、他の用途のためにDMAマッピングされたメモリ・ページを解放する前に、所定の長さの再割り当て遅延を実施する。
例示的な実施形態では、現在実施されているように、所定の再割り当て遅延を実施するコンピュータ・システムは、DMAマッピングされた各メモリ・ページが再割り当てされるときにそのようにすることを認識した。このため、再割り当てされるメモリにいくつかのDMAマッピングされたページが含まれる場合、それぞれのDMAマッピングされたページに対して個別の遅延が実行され、総遅延は各個別遅延の総和になる。たとえば、32テラバイトのメモリを有するシステムで大量のメモリを再割り当てする場合、結果として生じる総遅延時間によってシステムのパフォーマンスが低下し、顧客の苦情につながる。したがって、例示的な実施形態では、データの完全性を依然として維持しながら、総再割り当て遅延時間を短縮するニーズが満たされていないことを認識した。
例示的な実施形態は、方法、システム、およびコンピュータ・プログラム製品を提供する。一実施形態は、メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれDMA動作に関して有効化されていることを判定する方法を含む。一実施形態は、メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延を実行し、アクセス前遅延はメモリ・ページのセット内の各メモリ・ページに対して同時に実行される。
一実施形態は、コンピュータ使用可能プログラム製品を含む。コンピュータ使用可能プログラム製品は、1つまたは複数のコンピュータ可読ストレージ・デバイスと、1つまたは複数のストレージ・デバイスのうちの少なくとも1つに記憶されたプログラム命令と、を含む。
一実施形態は、コンピュータ・システムを含む。コンピュータ・システムは、1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読ストレージ・デバイスと、プログラム命令と、を含み、プログラム命令は、1つまたは複数のストレージ・デバイスのうちの少なくとも1つに記憶され、1つまたは複数のプロセッサのうちの少なくとも1つによって、1つまたは複数のメモリのうちの少なくとも1つを介して実行される。
第1の態様から見ると、本発明は、メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定することと、メモリ再割り当てプロセスの完了に続いて、メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延を実行することであって、アクセス前遅延はメモリ・ページのセット内の各メモリ・ページに対して同時に実行される、実行することと、を含む、コンピュータ実装方法を提供する。
好ましくは、本発明は、DMA動作に関して有効化されているメモリ・ページに対して、DMA遅延フラグを設定することをさらに含む、コンピュータ実装方法を提供する。
好ましくは、本発明は、メモリ・ページのセット内のメモリ・ページに対してDMA遅延フラグが設定されていると判定したことに応答して、アクセス前遅延が実行される、コンピュータ実装方法を提供する。
好ましくは、本発明は、DMA動作に関して有効化されているメモリ・ページのセットに対して、DMA遅延フラグを設定することをさらに含む、コンピュータ実装方法を提供する。
好ましくは、本発明は、メモリ・ページのセットに対してDMA遅延フラグが設定されていると判定したことに応答して、アクセス前遅延が実行される、コンピュータ実装方法を提供する。
好ましくは、本発明は、アクセス前遅延は、プログラム命令の実行を所定の時間遅延させることによって実行される、コンピュータ実装方法を提供する。
好ましくは、本発明は、第2のメモリ再割り当てプロセス中に、再割り当てされる第2のメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定することと、メモリ・ページのセット内のDMA動作に関して有効化されているメモリ・ページの再割り当てから閾値時間よりも長い時間がまだ経過していないと判定したことに応答して、メモリ再割り当てプロセスの完了に続いて、第2のメモリ・ページのセットへの第2の初期データの書き込みの前に、アクセス前遅延を実行することであって、アクセス前遅延は第2のメモリ・ページのセット内の各メモリ・ページに対して同時に実行される、実行することと、をさらに含む、コンピュータ実装方法を提供する。
他の態様から見ると、本発明は、DMAマッピングされたページを移行する際の遅延を最小化するためのコンピュータ・プログラム製品であって、コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読記憶媒体と、1つまたは複数のコンピュータ可読記憶媒体にまとめて記憶されたプログラム命令と、を含み、プログラム命令は、メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定するプログラム命令と、メモリ再割り当てプロセスの完了に続いて、メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延を実行するプログラム命令であって、アクセス前遅延はメモリ・ページのセット内の各メモリ・ページに対して同時に実行される、実行するプログラム命令と、を含む、コンピュータ・プログラム製品を提供する。
好ましくは、本発明は、DMA動作に関して有効化されているメモリ・ページに対して、DMA遅延フラグを設定するプログラム命令をさらに含む、コンピュータ・プログラム製品を提供する。
好ましくは、本発明は、メモリ・ページのセット内のメモリ・ページに対してDMA遅延フラグが設定されていると判定したことに応答して、アクセス前遅延が実行される、コンピュータ・プログラム製品を提供する。
好ましくは、本発明は、DMA動作に関して有効化されているメモリ・ページのセットに対して、DMA遅延フラグを設定するプログラム命令をさらに含む、コンピュータ・プログラム製品を提供する。
好ましくは、本発明は、メモリ・ページのセットに対してDMA遅延フラグが設定されていると判定したことに応答して、アクセス前遅延が実行される、コンピュータ・プログラム製品を提供する。
好ましくは、本発明は、アクセス前遅延は、プログラム命令の実行を所定の時間遅延させることによって実行される、コンピュータ・プログラム製品を提供する。
好ましくは、本発明は、第2のメモリ再割り当てプロセス中に、再割り当てされる第2のメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定することと、メモリ・ページのセット内のDMA動作に関して有効化されているメモリ・ページの再割り当てから閾値時間よりも長い時間がまだ経過していないと判定したことに応答して、メモリ再割り当てプロセスの完了に続いて、第2のメモリ・ページのセットへの第2の初期データの書き込みの前に、アクセス前遅延を実行することであって、アクセス前遅延は第2のメモリ・ページのセット内の各メモリ・ページに対して同時に実行される、実行することと、をさらに含む、コンピュータ・プログラム製品を提供する。
好ましくは、本発明は、記憶されたプログラム命令は、ローカル・データ処理システムの1つまたは複数の記憶媒体のうちの少なくとも1つに記憶され、記憶されたプログラム命令は、リモート・データ処理システムからネットワークを介して転送される、コンピュータ・プログラム製品を提供する。
好ましくは、本発明は、記憶されたプログラム命令は、サーバ・データ処理システムの1つまたは複数の記憶媒体のうちの少なくとも1つに記憶され、記憶されたプログラム命令は、ネットワークを介してリモート・データ処理システムにダウンロードされ、リモート・データ処理システムに関連付けられたコンピュータ可読ストレージ・デバイスで使用される、コンピュータ・プログラム製品を提供する。
好ましくは、本発明は、コンピュータ・プログラム製品は、クラウド環境内のサービスとして提供される、コンピュータ・プログラム製品を提供する。
他の態様から見ると、本発明は、1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読ストレージ・デバイスと、プログラム命令と、を含むコンピュータ・システムであって、プログラム命令は、1つまたは複数のストレージ・デバイスのうちの少なくとも1つに記憶され、1つまたは複数のプロセッサのうちの少なくとも1つによって1つまたは複数のメモリのうちの少なくとも1つを介して実行され、記憶されたプログラム命令は、:メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定するプログラム命令と、メモリ再割り当てプロセスの完了に続いて、メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延を実行するプログラム命令であって、アクセス前遅延はメモリ・ページのセット内の各メモリ・ページに対して同時に実行される、実行するプログラム命令と、を含む、コンピュータ・システムを提供する。
好ましくは、本発明は、DMA動作に関して有効化されているメモリ・ページに対して、DMA遅延フラグを設定するプログラム命令をさらに含む、コンピュータ・システムを提供する。
好ましくは、本発明は、メモリ・ページのセット内のメモリ・ページに対してDMA遅延フラグが設定されていると判定したことに応答して、アクセス前遅延が実行される、コンピュータ・システムを提供する。
好ましくは、本発明は、DMA動作に関して有効化されているメモリ・ページのセットに対して、DMA遅延フラグを設定することをさらに含む、コンピュータ・システムを提供する。
好ましくは、本発明は、メモリ・ページのセットに対してDMA遅延フラグが設定されていると判定したことに応答して、アクセス前遅延が実行される、コンピュータ・システムを提供する。
好ましくは、本発明は、第2のメモリ再割り当てプロセス中に、再割り当てされる第2のメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定するプログラム命令と、メモリ・ページのセット内のDMA動作に関して有効化されているメモリ・ページの再割り当てから閾値時間よりも長い時間がまだ経過していないと判定したことに応答して、メモリ再割り当てプロセスの完了に続いて、第2のメモリ・ページのセットへの第2の初期データの書き込みの前に、アクセス前遅延を実行するプログラム命令であって、アクセス前遅延は第2のメモリ・ページのセット内の各メモリ・ページに対して同時に実行される、実行するプログラム命令と、をさらに含む、コンピュータ・システムを提供する。
他の態様から見ると、本発明は、1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読ストレージ・デバイスと、プログラム命令と、を含むデータ処理環境であって、プログラム命令は、1つまたは複数のストレージ・デバイスのうちの少なくとも1つに記憶され、1つまたは複数のプロセッサのうちの少なくとも1つによって1つまたは複数のメモリのうちの少なくとも1つを介して実行され、記憶されたプログラム命令は、メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定するプログラム命令と、メモリ再割り当てプロセスの完了に続いて、メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延を実行するプログラム命令であって、アクセス前遅延はメモリ・ページのセット内の各メモリ・ページに対して同時に実行される、実行するプログラム命令と、を含む、データ処理環境を提供する。
他の態様から見ると、本発明は、メモリ・コントローラと、メモリ・マネージャと、を備え、メモリ・マネージャはメモリ・コントローラに動作を実行させるように構成され、動作は、メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定することと、メモリ再割り当てプロセスの完了に続いて、メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延を実行することであって、アクセス前遅延はメモリ・ページのセット内の各メモリ・ページに対して同時に実行される、実行することと、を含む、メモリ管理サブシステムを提供する。
本発明の特徴であると考える特定の新規の特徴を、添付の特許請求の範囲に記載している。しかしながら、本発明自体、ならびに好ましい使用形態、それらのさらなる目的および利点は、例示的な実施形態の以下の詳細な説明を、添付の図面と併せて読むことによって、最もよく理解されよう。
例示的な実施形態では、データの完全性を維持しながら、総再割り当て遅延時間を短縮するニーズが満たされていないことを認識した。例示的な実施形態では、現在利用可能なツールまたは解決策がこれらのニーズに対処しておらず、これらのニーズに十分な解決策も提供していないことを認識した。本発明の説明に使用する例示的な実施形態は、概して、上記の問題と、DMAメモリ遅延の最小化に関連するその他の問題とに取り組み、解決する。
一実施形態は、ソフトウェア・アプリケーションとして実装することができる。一実施形態を実装するアプリケーションは、既存のメモリ管理システムを修正したものとして、既存のメモリ管理と連携して動作する別個のアプリケーションとして、スタンドアロンのアプリケーションとして、あるいはそれらの何らかの組み合わせとして、構成することができる。
具体的には、いくつかの例示的な実施形態は、メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれDMA動作に関して有効化されていることを判定する方法を提供する。この方法は、DMAに関して有効化されている各メモリ・ページに対して同時にアクセス前遅延を実行した後、メモリ・ページのセットに初期データを書き込む。
一実施形態は、メモリ再割り当て要求を受け取る。メモリ再割り当て要求とは、現在使用されているメモリの一部分の内容を他の場所に移動または移行する要求である。メモリの一部分の内容を移動する理由の一例は、メモリの元の部分を含む連続するメモリ領域をアセンブルするためである。たとえば、アプリケーションからのメモリの連続する16メガバイトの部分の要求を満たすために、メモリ管理システムは適切な開始位置を特定し得る。しかしながら、提案された連続する16メガバイトの部分は既に使用中であり得るので、その内容を他の場所に再配置して、所望の連続する16メガバイトを解放して使用できるようにする必要がある。
メモリ再割り当てプロセスの一部として、一実施形態は、アセンブルされる連続するメモリ領域内のメモリのページが、DMAマッピングの対象であることによって、DMA動作に関して有効化されているか否かを判定する。一実施形態は、任意の適切な技術を使用してDMAマッピングの存在を検出し、DMAマッピング判定の結果を保存する。一実施形態は、オペレーティング・システムによって保持されるメタデータを使用して、DMAマッピングの存在を検出する。たとえば、AIX(R)オペレーティング・システムは、各メモリ・ページの状態を記述するメタデータを保持し、これには、ページのサイズおよびステータス(たとえば、空き、使用中、ページイン、またはページアウト)、ページがページング・スペース内にある場合に、ページがどのページング・デバイスに属するか、およびページに対してDMAマッパーが有効化されているか否か、が含まれる。他のオペレーティング・システムは、同様のページ関連のメタデータを保持する。
ページのDMA動作ステータスを記録するために、一実施形態は、再割り当てされるページまたはメモリの他のサブセットごとにフラグを保持する。ページのフラグは、そのページがDMAマッピングに起因する遅延を必要とする場合に設定され、そうでなければクリアされる。他の実施形態は、統合されるメモリの部分全体に対して1つのフラグを保持する。このフラグは、部分全体の中のいずれかのページがDMAマッピングに起因する遅延を必要とする場合に設定され、そうでなければクリアされる。他の実施形態は、他の現在知られている技術を使用して遅延の必要性を記録する。
ページのDMA動作ステータスを記録する場合、一実施形態は、任意の現在知られている技術を使用して、そのページからの移行が発生した時刻も記録する。その後、メモリ再割り当てプロセスが完了すると、この実施形態はまた、特定のDMAマッピングされたページからのデータ移行が発生した時刻を参照する。移行から十分な時間が既に経過している場合、遅延は事実上既に実行されており、再度実行される必要はない。たとえば、一実施形態がプロセスの早い段階でDMAマッピングされたページに遭遇するメモリ再割り当てプロセスを考える。再割り当てプロセスが完了するまでに、遅延時間は既に自然に経過し得、追加の遅延は必要ない。したがって、遅延が実行される必要がない場合、この実施形態は適切なDMAフラグをクリアする。
新たにアセンブルされた連続するメモリ領域を解放して使用できるようにする前に、その領域は所定の初期値に設定される必要がある。メモリ領域を初期値に設定すると、以前に別のアプリケーションによってその領域に記憶されたデータが上書きされ、以前に記憶されたデータが不正にアクセスされることが防止される。初期値は典型的にはゼロであるが、他の初期値または値のパターンも可能である。初期値は典型的にはゼロであるので、1つまたは複数の初期値を設定するコンポーネントはゼロ化エンジンとも呼ばれる。さらに、一部のアプリケーションは、新しく割り当てられたメモリがゼロまたは他の所定の値に設定されていると誤って想定した結果、ソフトウェア・エラーが発生する。メモリ領域をゼロに設定することは、これらのエラーを防ぐのに役立つ。さらに、所望の値(たとえば、ゼロ)に既に設定されたメモリがアプリケーションに提供される場合、アプリケーションは初期化を自身で実行する必要がないので、アプリケーションの効率が向上する。一部のオペレーティング・システムは、新しく割り当てられたメモリを特定の値またはパターンに設定するメモリ割り当て機能も含む。
メモリの領域を所定の初期値に設定するシステムの現在知られている実装は、メモリ・アドレスの1つまたは複数の範囲を受け取り、任意選択でそれらの範囲をより小さい範囲に細分化し、互いに並行して実行されるワーカー(worker)スレッドのセットを使用して、各メモリ範囲を初期値に設定する。1つの現在知られている実装では、メモリ・アドレスの各範囲は16メガバイトのメモリのページである。他の現在知られている実装では、メモリ・アドレスの各範囲は、16メガバイトよりも小さいまたは大きいメモリのページである。他の現在知られている実装では、メモリ・アドレスの各範囲は、いくつかのメモリ・ページを含むメモリのセグメントである。いくつかの現在知られている実装は、設定されるメモリの範囲の1つまたは複数の開始アドレスを受け取り、範囲の終了アドレスまたはサイズは所定の定数である。
一実施形態は、メモリ・アドレスの入力範囲のいずれかが、本明細書で説明するようにアクセス前遅延を必要とするフラグが立てられているか否かを判定することによって、現在知られている実装を変更する。メモリ・アドレス・ページの1つまたは複数の入力範囲がアクセス前遅延を必要とする場合、一実施形態は、各メモリ範囲に対して同時に遅延を実行する。一実施形態は、処理の実行を所定の時間、たとえば250ms遅延させることによって遅延を実行する。
遅延が実行される場合、遅延が完了すると、一実施形態は、互いに並行して実行されるワーカー・スレッドのセットを使用して、各メモリ範囲を所望の初期値に設定する。最後に、一実施形態は、このとき割り当てられて初期化された、要求された連続するメモリ領域を要求元に提供する。
本明細書に記載のDMAマッピングされたページを移行する際の遅延を最小化する方式は、メモリ管理に関する技術的な試みの範囲(technological field of endeavor)において現在利用可能な方法では得られない。本明細書に記載の一実施形態の方法は、デバイスまたはデータ処理システム上で実行されるように実装された場合、メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれDMA動作に関して有効化されていることを判定することに関して、そのデバイスまたはデータ処理システムの機能の大幅な進歩を含む。この方法は、DMAに関して有効化されている各メモリ・ページに対して同時にアクセス前遅延を実行した後、メモリ・ページのセットに初期データを書き込む。
例示的な実施形態は、特定のタイプのメモリの部分、遅延、初期値、動作、マッピング、決定、測定値、デバイス、データ処理システム、環境、コンポーネント、およびアプリケーションに関して、単なる例として説明している。これらおよび他の類似の人工物のいかなる特定の表現(manifestation)も、本発明を限定することを意図するものではない。これらおよび他の類似の人工物の任意の適切な表現を、例示的な実施形態の範囲内で選択することができる。
さらに、例示的な実施形態は、任意のタイプのデータ、データ・ソース、またはデータ・ネットワークを介したデータ・ソースへのアクセスに関して実装され得る。任意のタイプのデータ・ストレージ・デバイスは、本発明の範囲内で、データ処理システムにおいてローカルに、またはデータ・ネットワークを介して、本発明の一実施形態にデータを提供し得る。モバイル・デバイスを使用した一実施形態を説明する場合、モバイル・デバイスでの使用に適した任意のタイプのデータ・ストレージ・デバイスは、例示的な実施形態の範囲内で、モバイル・デバイスにおいてローカルに、またはデータ・ネットワークを介して、そのような実施形態にデータを提供し得る。
例示的な実施形態は、特定のコード、設計、アーキテクチャ、プロトコル、レイアウト、回路図、およびツールを単なる例として使用して説明しており、例示的な実施形態に限定するものではない。さらに、例示的な実施形態は、説明を明確にするために、単なる一例として、特定のソフトウェア、ツール、およびデータ処理環境を使用するいくつかの例で説明している。例示的な実施形態は、他の同等のまたは同様の目的の構造、システム、アプリケーション、またはアーキテクチャと共に使用され得る。たとえば、他の同等のモバイル・デバイス、構造、システム、アプリケーション、またはそれらのアーキテクチャが、本発明の範囲内で、本発明のそのような実施形態と共に使用され得る。例示的な実施形態は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装され得る。
本開示の例は、説明を明確にするためにのみ使用しており、例示的な実施形態に限定するものではない。追加のデータ、動作、アクション、タスク、アクティビティ、および操作が本開示から考えられ、それと同じことが例示的な実施形態の範囲内で企図されている。
本明細書に列挙しているあらゆる利点は例にすぎず、例示的な実施形態に限定にすることを意図するものではない。追加の利点または異なる利点は、特定の例示的な実施形態によって実現され得る。さらに、特定の例示的な実施形態は、上記に列挙した利点の一部もしくは全部を有してもよく、または全く有さなくてもよい。
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に列挙した教示の実装形態はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られているまたは今後開発される他の任意のタイプのコンピューティング環境と共に実装することが可能である。
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとのやりとりによって迅速にプロビジョニングおよび解放することができる、設定可能なコンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つのデプロイメント・モデルとを含み得る。
特徴は以下の通りである。
オンデマンド・セルフ・サービス:クラウド・コンシューマは、サービスのプロバイダとの人的な対話を必要とせずに、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方的にプロビジョニングすることができる。
ブロード・ネットワーク・アクセス:能力はネットワークを介して利用することができ、異種のシンまたはシック・クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
リソース・プーリング:プロバイダのコンピューティング・リソースをプールして、様々な物理リソースおよび仮想リソースが需要に応じて動的に割り当ておよび再割り当てされるマルチ・テナント・モデルを使用して複数のコンシューマにサービス提供する。一般にコンシューマは、提供されるリソースの正確な位置に対して何もできず、知っているわけでもないが、より高い抽象化レベル(たとえば、国、州、またはデータセンターなど)では位置を特定可能であり得るという点で位置非依存の感覚がある。
迅速な弾力性:能力を迅速かつ弾力的に、場合によっては自動的にプロビジョニングして素早くスケール・アウトし、迅速に解放して素早くスケール・インすることができる。コンシューマにとって、プロビジョニング可能な能力は無制限であるように見えることが多く、任意の時間に任意の数量で購入することができる。
測定されるサービス:クラウド・システムは、サービスのタイプ(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適したある抽象化レベルでの計量機能を活用して、リソースの使用を自動的に制御し、最適化する。リソース使用量を監視、管理、および報告して、利用されるサービスのプロバイダおよびコンシューマの両方に透明性を提供することができる。
オンデマンド・セルフ・サービス:クラウド・コンシューマは、サービスのプロバイダとの人的な対話を必要とせずに、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方的にプロビジョニングすることができる。
ブロード・ネットワーク・アクセス:能力はネットワークを介して利用することができ、異種のシンまたはシック・クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
リソース・プーリング:プロバイダのコンピューティング・リソースをプールして、様々な物理リソースおよび仮想リソースが需要に応じて動的に割り当ておよび再割り当てされるマルチ・テナント・モデルを使用して複数のコンシューマにサービス提供する。一般にコンシューマは、提供されるリソースの正確な位置に対して何もできず、知っているわけでもないが、より高い抽象化レベル(たとえば、国、州、またはデータセンターなど)では位置を特定可能であり得るという点で位置非依存の感覚がある。
迅速な弾力性:能力を迅速かつ弾力的に、場合によっては自動的にプロビジョニングして素早くスケール・アウトし、迅速に解放して素早くスケール・インすることができる。コンシューマにとって、プロビジョニング可能な能力は無制限であるように見えることが多く、任意の時間に任意の数量で購入することができる。
測定されるサービス:クラウド・システムは、サービスのタイプ(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適したある抽象化レベルでの計量機能を活用して、リソースの使用を自動的に制御し、最適化する。リソース使用量を監視、管理、および報告して、利用されるサービスのプロバイダおよびコンシューマの両方に透明性を提供することができる。
サービス・モデルは以下の通りである。
ソフトウェア・アズ・ア・サービス(SaaS:Software as a Service):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で動作するプロバイダのアプリケーションを使用することである。アプリケーションは、Webブラウザ(たとえば、Webベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定を可能性のある例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション機能を含む、基盤となるクラウド・インフラストラクチャを管理も制御もしない。
プラットフォーム・アズ・ア・サービス(PaaS:Platform as a Service):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマが作成または取得したアプリケーションをクラウド・インフラストラクチャ上にデプロイすることである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基盤となるクラウド・インフラストラクチャを管理も制御もしないが、デプロイされたアプリケーションおよび場合によってはアプリケーション・ホスティング環境構成を制御する。
インフラストラクチャ・アズ・ア・サービス(IaaS:Infrastructure as a Service):コンシューマに提供される能力は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをコンシューマがデプロイして動作させることが可能な、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることである。コンシューマは、基盤となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御し、場合によっては選択したネットワーキング・コンポーネント(たとえば、ホスト・ファイアウォール)を限定的に制御する。
ソフトウェア・アズ・ア・サービス(SaaS:Software as a Service):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で動作するプロバイダのアプリケーションを使用することである。アプリケーションは、Webブラウザ(たとえば、Webベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定を可能性のある例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション機能を含む、基盤となるクラウド・インフラストラクチャを管理も制御もしない。
プラットフォーム・アズ・ア・サービス(PaaS:Platform as a Service):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマが作成または取得したアプリケーションをクラウド・インフラストラクチャ上にデプロイすることである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基盤となるクラウド・インフラストラクチャを管理も制御もしないが、デプロイされたアプリケーションおよび場合によってはアプリケーション・ホスティング環境構成を制御する。
インフラストラクチャ・アズ・ア・サービス(IaaS:Infrastructure as a Service):コンシューマに提供される能力は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをコンシューマがデプロイして動作させることが可能な、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることである。コンシューマは、基盤となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御し、場合によっては選択したネットワーキング・コンポーネント(たとえば、ホスト・ファイアウォール)を限定的に制御する。
デプロイメント・モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは組織専用に運用される。これは組織または第三者によって管理され得、構内または構外に存在し得る。
コミュニティ・クラウド:クラウド・インフラストラクチャはいくつかの組織によって共有され、共通の懸念(たとえば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項など)を有する特定のコミュニティをサポートする。これは組織または第三者によって管理され得、構内または構外に存在し得る。
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大規模な業界団体に対して利用可能にされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーションの移植性を可能にする標準化技術または独自技術(たとえば、クラウド間の負荷分散のためのクラウド・バースティング)によって結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)を合成したものである。
プライベート・クラウド:クラウド・インフラストラクチャは組織専用に運用される。これは組織または第三者によって管理され得、構内または構外に存在し得る。
コミュニティ・クラウド:クラウド・インフラストラクチャはいくつかの組織によって共有され、共通の懸念(たとえば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項など)を有する特定のコミュニティをサポートする。これは組織または第三者によって管理され得、構内または構外に存在し得る。
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大規模な業界団体に対して利用可能にされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーションの移植性を可能にする標準化技術または独自技術(たとえば、クラウド間の負荷分散のためのクラウド・バースティング)によって結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)を合成したものである。
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味論的相互運用性に重点を置いたサービス指向型である。クラウド・コンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
図を参照すると、特に図1および図2を参照すると、これらの図は、例示的な実施形態が実装され得るデータ処理環境の例示的な図である。図1および図2は単なる例であり、異なる実施形態が実装され得る環境に関するいかなる限定の主張も示唆も意図していない。特定の実装形態では、以下の説明に基づいて、図示した環境に多くの変更を加えられ得る。
図1は、例示的な実施形態が実装され得るデータ処理システムのネットワークのブロック図を示している。データ処理環境100は、例示的な実施形態が実装され得るコンピュータのネットワークである。データ処理環境100は、ネットワーク102を含む。ネットワーク102は、データ処理環境100内で相互に接続された様々なデバイスおよびコンピュータの間に通信リンクを提供するために使用される媒体である。ネットワーク102は、有線、無線通信リンク、または光ファイバ・ケーブルなどの接続を含み得る。
クライアントまたはサーバは、ネットワーク102に接続された特定のデータ処理システムの例示的な役割にすぎず、これらのデータ処理システムの他の構成または役割を排除することを意図していない。サーバ104およびサーバ106は、ストレージ・ユニット108と共にネットワーク102に結合する。ソフトウェア・アプリケーションは、データ処理環境100内の任意のコンピュータで実行され得る。クライアント110、112、および114も、ネットワーク102に結合される。サーバ104もしくは106、またはクライアント110、112、もしくは114などのデータ処理システムは、データを含み得、ソフトウェア・アプリケーションまたはソフトウェア・ツールがその上で実行され得る。
単なる一例として、そのようなアーキテクチャへのいかなる限定も示唆せずに、図1は、一実施形態の例示的な実装形態において使用可能な特定のコンポーネントを示している。たとえば、サーバ104および106、ならびにクライアント110、112、114は、単なる一例として、クライアント-サーバ・アーキテクチャへの限定を示唆するためではなく、サーバおよびクライアントとして図示している。他の例として、一実施形態は、図示のようにいくつかのデータ処理システムおよびデータ・ネットワークにわたって分散させることができるが、他の実施形態は、例示的な実施形態の範囲内で単一のデータ処理システム上に実装することができる。データ処理システム104、106、110、112、および114はまた、クラスタ内の例示的なノード、パーティション、および一実施形態を実装するのに適したその他の構成を表す。
デバイス132は、本明細書に記載のデバイスの一例である。たとえば、デバイス132は、スマートフォン、タブレット・コンピュータ、ラップトップ・コンピュータ、据置型または携帯型のクライアント110、ウェアラブル・コンピューティング・デバイス、または他の任意の適切なデバイスの形態を取ることができる。図1の他のデータ処理システムで実行されるように記載している任意のソフトウェア・アプリケーションは、デバイス132において同様の方法で実行されるように構成することができる。図1の他のデータ処理システムにおいて記憶または生成される任意のデータまたは情報は、デバイス132において同様の方法で記憶または生成されるように構成することができる。
アプリケーション105は、本明細書に記載の一実施形態を実装する。アプリケーション105は、サーバ104および106、クライアント110、112、および114、ならびにデバイス132のうちのいずれにおいても実行される。
サーバ104および106、ストレージ・ユニット108、クライアント110、112、および114、ならびにデバイス132は、有線接続、無線通信プロトコル、またはその他の適切なデータ接続を使用してネットワーク102に結合し得る。クライアント110、112、および114は、たとえば、パーソナル・コンピュータ、またはネットワーク・コンピュータであり得る。
図示の例では、サーバ104は、たとえば、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータをクライアント110、112、および114に提供し得る。クライアント110、112、および114は、この例ではサーバ104に対するクライアントであり得る。クライアント110、112、114、またはそれらの何らかの組み合わせは、それら自体のデータ、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションを含み得る。データ処理環境100は、図示していない追加のサーバ、クライアント、およびその他のデバイスを含み得る。
図示の例では、データ処理環境100はインターネットであり得る。ネットワーク102は、伝送制御プロトコル/インターネット・プロトコル(TCP/IP:Transmission Control Protocol/Internet Protocol)およびその他のプロトコルを使用して相互に通信するネットワークおよびゲートウェイの集合体を表し得る。インターネットの中心にあるのは、データおよびメッセージをルーティングする数千の商用、政府、教育、およびその他のコンピュータ・システムを含む、メジャー・ノードまたはホスト・コンピュータの間のデータ通信リンクのバックボーンである。当然ながら、データ処理環境100は、いくつかの異なるタイプのネットワーク、たとえば、イントラネット、ローカル・エリア・ネットワーク(LAN:local area network)、またはワイド・エリア・ネットワーク(WAN:wide area network)などとしても実装され得る。図1は一例として意図しており、異なる例示的な実施形態へのアーキテクチャ上の限定として意図していない。
用途の中でもとりわけ、データ処理環境100は、例示的な実施形態が実装され得るクライアント-サーバ環境を実装するために使用され得る。クライアント-サーバ環境は、ソフトウェア・アプリケーションおよびデータをネットワークに分散させて、アプリケーションがクライアント・データ処理システムとサーバ・データ処理システムとの間の双方向性を使用して機能するようにすることを可能にする。データ処理環境100はまた、ネットワークに分散された相互運用可能なソフトウェア・コンポーネントが一貫性のあるビジネス・アプリケーションとして一緒にパッケージ化され得るサービス指向アーキテクチャを採用し得る。データ処理環境100はまた、クラウドの形態を取り、最小限の管理労力またはサービスのプロバイダとのやりとりで迅速にプロビジョニングおよび解放することができる設定可能なコンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信のクラウド・コンピューティング・モデルを採用し得る。
図2を参照すると、この図は、例示的な実施形態が実装され得るデータ処理システムのブロック図を示している。データ処理システム200は、図1のサーバ104および106、またはクライアント110、112、および114などのコンピュータ、または例示的な実施形態の処理を実装するコンピュータ使用可能プログラム・コードまたは命令が配置され得る他のタイプのデバイスの一例である。
データ処理システム200はまた、例示的な実施形態の処理を実装するコンピュータ使用可能プログラム・コードまたは命令が配置され得る、図1のデータ処理システム132などのデータ処理システムまたはその中の構成を表す。データ処理システム200は、単なる一例として、コンピュータとして、それに限定することなく説明している。図1のデバイス132などの他のデバイスの形態での実装形態は、本明細書に記載のデータ処理システム200の動作および機能の一般的な説明から逸脱することなく、タッチ・インターフェースを追加するなどしてデータ処理システム200を変更し得、さらにはデータ処理システム200から特定の図示したコンポーネントを除外し得る。
図示の例では、データ処理システム200は、ノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH:North Bridge and memory controller hub)202と、サウス・ブリッジおよび入力/出力(I/O:input/output)コントローラ・ハブ(SB/ICH:South Bridge and I/O controller hub)204とを含むハブ・アーキテクチャを採用している。処理ユニット206、メイン・メモリ208、およびグラフィック・プロセッサ210は、ノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH)202に結合される。処理ユニット206は、1つまたは複数のプロセッサを含み得、1つまたは複数の異種プロセッサ・システムを使用して実装され得る。処理ユニット206は、マルチコア・プロセッサであり得る。グラフィック・プロセッサ210は、特定の実装形態では、アクセラレーテッド・グラフィック・ポート(AGP:accelerated graphics port)を介してNB/MCH202に結合され得る。
図示の例では、ローカル・エリア・ネットワーク(LAN)アダプタ212は、サウス・ブリッジおよびI/Oコントローラ・ハブ(SB/ICH)204に結合される。オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、読み取り専用メモリ(ROM:read only memory)224、ユニバーサル・シリアル・バス(USB:universal serial bus)などのポート232、ならびにPCI/PCIe(R)デバイス234は、バス238を介してサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合される。ハード・ディスク・ドライブ(HDD:hard disk drive)またはソリッド・ステート・ドライブ(SSD:solid-state drive)226およびCD-ROM230は、バス240を介してサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合される。PCI/PCIe(R)デバイス234は、たとえば、イーサネット(R)アダプタ、アドイン・カード、およびノートブック・コンピュータ用のPCカードを含み得る。PCIはカード・バス・コントローラを使用するが、PCIe(R)は使用しない。ROM224は、たとえば、フラッシュ・バイナリ入力/出力システム(BIOS:binary input/output system)であり得る。ハード・ディスク・ドライブ226およびCD-ROM230は、たとえば、統合ドライブ・エレクトロニクス(IDE:integrated drive electronics)、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA:serial advanced technology attachment)インターフェース、または外部SATA(eSATA:external-SATA)およびマイクロSATA(mSATA:micro-SATA)などの変形を使用し得る。スーパーI/O(SIO:super I/O)デバイス236は、バス238を介してサウス・ブリッジおよびI/Oコントローラ・ハブ(SB/ICH)204に結合され得る。
メイン・メモリ208、ROM224、またはフラッシュ・メモリ(図示せず)などのメモリは、コンピュータ使用可能ストレージ・デバイスの一部の例である。ハード・ディスク・ドライブまたはソリッド・ステート・ドライブ226、CD-ROM230、およびその他の同様に使用可能なデバイスは、コンピュータ使用可能記憶媒体を含むコンピュータ使用可能ストレージ・デバイスの一部の例である。
オペレーティング・システムは、処理ユニット206上で動作する。オペレーティング・システムは、図2のデータ処理システム200内の様々なコンポーネントを調整し、制御する。オペレーティング・システムは、サーバ・システム、パーソナル・コンピュータ、およびモバイル・デバイスを含むがこれらに限定されない任意のタイプのコンピューティング・プラットフォーム用の市販のオペレーティング・システムであり得る。オブジェクト指向またはその他のタイプのプログラミング・システムは、オペレーティング・システムと連携して動作し、データ処理システム200上で実行されるプログラムまたはアプリケーションからのオペレーティング・システムへの呼び出しを提供し得る。
オペレーティング・システム、オブジェクト指向プログラミング・システム、および図1のアプリケーション105などのアプリケーションまたはプログラムの命令は、ハード・ディスク・ドライブ226上のコード226Aの形態などでストレージ・デバイス上に配置され、処理ユニット206による実行のために、メイン・メモリ208などの1つまたは複数のメモリのうちの少なくとも1つにロードされ得る。例示的な実施形態の処理は、たとえば、メイン・メモリ208、読み取り専用メモリ224などのメモリに、あるいは1つまたは複数の周辺デバイスに配置され得るコンピュータ実装命令を使用して、処理ユニット206によって実行され得る。
さらに、あるケースでは、コード226Aは、同様のコード201Cがストレージ・デバイス201Dに記憶されているリモート・システム201Bからネットワーク201Aを介してダウンロードされ得る。他のケースでは、コード226Aは、ネットワーク201Aを介してリモート・システム201Bにダウンロードされ得、そこで、ダウンロードされたコード201Cがストレージ・デバイス201Dに記憶される。
図1および図2のハードウェアは、実装形態によって異なり得る。フラッシュ・メモリ、同等の不揮発性メモリ、または光学ディスク・ドライブなどの他の内部ハードウェアまたは周辺デバイスが、図1および図2に示したハードウェアに加えて、またはその代わりに使用され得る。さらに、例示的な実施形態の処理は、マルチプロセッサ・データ処理システムに適用され得る。
一部の例示的な例では、データ処理システム200は、オペレーティング・システム・ファイルまたはユーザ生成データあるいはその両方を記憶するための不揮発性メモリを提供するフラッシュ・メモリを備えて一般に構成されるパーソナル・デジタル・アシスタント(PDA:personal digital assistant)であり得る。バス・システムは、システム・バス、I/Oバス、およびPCIバスなどの1つまたは複数のバスを含み得る。当然ながら、バス・システムは、任意のタイプの通信ファブリックまたはアーキテクチャを使用して実装され得、これは、そのファブリックまたはアーキテクチャに接続された様々なコンポーネントまたはデバイス間のデータの転送を実現する。
通信ユニットは、モデムまたはネットワーク・アダプタなど、データを送信および受信するために使用される1つまたは複数のデバイスを含み得る。メモリは、たとえば、メイン・メモリ208またはキャッシュ、たとえば、ノース・ブリッジおよびメモリ・コントローラ・ハブ202にあるキャッシュなどであり得る。処理ユニットは、1つまたは複数のプロセッサまたはCPUを含み得る。
図1および図2に示した例および上述の例は、アーキテクチャ上の限定を示唆するものではない。たとえば、データ処理システム200はまた、モバイル・デバイスまたはウェアラブル・デバイスの形態を取ることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話デバイスであり得る。
コンピュータまたはデータ処理システムを仮想マシン、仮想デバイス、または仮想コンポーネントとして説明する場合、その仮想マシン、仮想デバイス、または仮想コンポーネントは、データ処理システム200内に図示した一部または全部のコンポーネントの仮想化表現を使用して、データ処理システム200のように動作する。たとえば、仮想マシン、仮想デバイス、または仮想コンポーネントにおいて、処理ユニット206は、ホスト・データ処理システムで利用可能なハードウェア処理ユニット206の全部または一部の仮想化インスタンスとして表現され、メイン・メモリ208は、ホスト・データ処理システムで利用可能であり得るメイン・メモリ208の全部または一部の仮想化インスタンスとして表現され、ディスク226は、ホスト・データ処理システムで利用可能であり得るディスク226の全部または一部の仮想化インスタンスとして表現される。そのような場合のホスト・データ処理システムは、データ処理システム200によって表される。
図3を参照すると、この図は、例示的な実施形態による、DMAマッピングされたページを移行する際の遅延を最小化するための例示的な構成のブロック図を示している。アプリケーション300は、図1のアプリケーション105の一例であり、図1のサーバ104および106、クライアント110、112、および114、ならびにデバイス132のうちのいずれかで実行される。
再割り当てモジュール310は、たとえば、メモリの一部分の内容を移動して、元の部分を含む連続するメモリ領域をアセンブルするためのメモリ再割り当て要求を受け取る。メモリ再割り当てプロセスの一部として、モジュール310は、アセンブルされる連続するメモリ領域内のメモリのページが、DMAマッピングの対象であることによって、DMA動作に関して有効化されているか否かを判定する。モジュール310は、DMAマッピング判定の結果を保存する。モジュール310の1つの実装は、再割り当てされるメモリのページごとにフラグを保持する。ページのフラグは、そのページがDMAマッピングに起因する遅延を必要とする場合に設定され、そうでなければクリアされる。モジュール310の他の実装は、統合されるメモリの部分全体に対して1つのフラグを保持する。このフラグは、部分全体の中のいずれかのページがDMAマッピングに起因する遅延を必要とする場合に設定され、そうでなければクリアされる。モジュール310の他の実装は、他の適切な技術を使用して遅延の必要性を記録する。
ページのDMA動作ステータスを記録する場合、モジュール310の1つの実装は、そのページからの移行が発生した時刻も記録する。次いで、メモリ再割り当てプロセスが完了すると、この実装はまた、特定のDMAマッピングされたページからのデータ移行が発生した時刻を参照する。移行から十分な時間が既に経過している場合、遅延は事実上既に実行されており、再度実行される必要はない。したがって、遅延が実行される必要がない場合、モジュール310のこの実装は適切なDMAフラグをクリアする。
初期データ書き込みモジュール320は、メモリ・アドレスの入力範囲のいずれかが、本明細書に記載のようにアクセス前遅延を必要とするフラグが立てられているか否かを判定することによって、現在知られている実装を変更する。メモリ・アドレス・ページの1つまたは複数の入力範囲がアクセス前遅延を必要とする場合、モジュール320は各メモリ範囲に対して同時に遅延を実行する。モジュール320の1つの実装は、処理の実行を所定の時間、たとえば250ms遅延させることによって遅延を実行する。遅延が完了すると、モジュール320は、互いに並行して実行されるワーカー・スレッドのセットを使用して、各メモリ範囲を所望の初期値に設定する。最後に、モジュール320は、このとき割り当てられて初期化された、要求された連続するメモリ領域を要求元に提供する。
図4を参照すると、この図は、例示的な実施形態による、DMAマッピングされたページを移行する際の遅延を最小化する一例を示している。この例は、図3のアプリケーション300を使用して実行することができる。
図示のように、アプリケーション300はメモリ再割り当て要求402を受け取る。メモリ410内のメモリ再割り当てプロセスの一部として、アプリケーションは、ページ412がDMAマッピングの対象ではなく、ページ414および416がDMAマッピングの対象であると判定する。その結果、アプリケーション300はページ・リスト420を作る。ページ・リスト420では、ページ412のフラグがクリアされており、これはページ412がDMAマッピングに起因する遅延を必要としないことを示す。ページ414および416のフラグが設定されており、これはページ414および416がDMAマッピングに起因する遅延を必要とすることを示す。アプリケーション300の他の実装では、ページ・リスト420は単一のフラグに置き換えられ、これは、ページ412、414、および416のいずれかがDMAマッピングの対象である場合に設定され、そうでなければクリアされる。
図5を参照すると、この図は、例示的な実施形態による、DMAマッピングされたページを移行する際の遅延を最小化する例の続きを示している。初期データ書き込みモジュール320は、図3の初期データ書き込みモジュール320と同じである。ページ412、414、および416ならびにページ・リスト420は、図4のページ412、414、および416ならびにページ・リスト420と同じである。
図示のように、ページ・リスト420では、ページ414および416のフラグが設定されており、これはページ414および416がDMAマッピングに起因する遅延を必要とすることを示す。ページ414および416は、初期データ書き込みモジュール320によって受け取られたより大きいメモリ範囲のサブセットであり得ることに留意されたい。さらに、ページ・リスト420は、モジュール320によって受け取られたメモリ・アドレスの1つまたは複数の範囲の一部分のみのステータスを示す。ページ414および416は遅延を必要とするので、初期データ書き込みモジュール320は、1回の割り当て前遅延510を実行する。遅延510が完了すると、モジュール320は、互いに並行して実行されるワーカー・スレッドのセットを使用して、動作512、514、および516を実行する。動作512はページ412をゼロにし、動作514はページ414をゼロにし、動作516はページ416をゼロにする。メモリ・ページが所望の値に設定されると、アプリケーション300はメモリ再割り当て520を再割り当て要求元に提供する。
図6を参照すると、この図は、例示的な実施形態による、DMAマッピングされたページを移行する際の遅延を最小化するための例示的な処理のフローチャートを示している。処理600は、図3のアプリケーション300で実装することができる。
ブロック602において、アプリケーションは、再割り当てされるメモリ・ページを識別し、そのページ内のデータを他の場所に移行する。ブロック604において、アプリケーションは、再割り当てされるページがDMA動作に関して有効化されているか否かを判定する。有効化されている場合(ブロック604の「YES」パス)、ブロック606において、アプリケーションはこのページのDMA遅延フラグを設定する。有効化されていない場合(ブロック604の「NO」パス)、またはブロック606の後に、ブロック608において、アプリケーションは他のページが再割り当てされるかを判定する。再割り当てされる場合(ブロック608の「YES」パス)、アプリケーションはブロック602に戻る。再割り当てされない場合(ブロック608の「NO」パス)、ブロック610において、アプリケーションは、再割り当てされるページのセット内のメモリ・ページに対してDMAフラグが設定されているか否かを判定する。設定されている場合(ブロック610の「YES」パス)、ブロック612において、アプリケーションはアクセス前遅延を実行する。設定されていない場合(ブロック610の「NO」パス)、またはブロック612の後に、ブロック614において、アプリケーションは、初期データをページのセットに書き込み、ページのセットを解放して使用できるようにする。その後、アプリケーションは終了する。
ここで図7を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示のように、クラウド・コンピューティング環境50は1つまたは複数のクラウド・コンピューティング・ノード10を含み、これらを使用して、たとえば、パーソナル・デジタル・アシスタント(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはそれらの組み合わせなどの、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信し得る。ノード10は相互に通信し得る。これらは、たとえば、上述のプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組み合わせなどの1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化され得る(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを維持する必要がない、インフラストラクチャ・アズ・ア・サービス、プラットフォーム・アズ・ア・サービス、またはソフトウェア・アズ・ア・サービス、あるいはそれらの組み合わせを提供することが可能になる。図示したコンピューティング・デバイス54A~Nのタイプは例示的なものにすぎないことを意図しており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワークまたはネットワーク・アドレス指定可能接続(たとえば、Webブラウザを使用)あるいはその両方を介して任意のタイプのコンピュータ化デバイスと通信できることを理解されたい。
ここで図8を参照すると、クラウド・コンピューティング環境50(図7)によって提供される機能的抽象化レイヤのセットが示されている。図示したコンポーネント、レイヤ、および機能は例示的なものにすぎないことを意図しており、本発明の実施形態はこれらに限定されないことを事前に理解されたい。図示のように、以下のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム61、RISC(縮小命令セット・コンピュータ:Reduced Instruction Set Computer)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66が含まれる。いくつかの実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想化レイヤ70は抽象化レイヤを提供し、抽象化レイヤから、仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供され得る。
一例では、管理レイヤ80は、下記の機能を提供し得る。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。計量および価格決定82は、クラウド・コンピューティング環境内でリソースが利用されたときの費用追跡と、これらのリソースの消費に対する会計または請求とを提供する。一例では、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、クラウド・コンシューマおよびタスクの同一性検証だけでなく、データおよび他のリソースに対する保護も提供する。ユーザ・ポータル83は、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されたサービス・レベルが満たされるような、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル合意(SLA:Service Level Agreement)の計画および履行85は、SLAに従って将来要求されると予想されるクラウド・コンピューティング・リソースの事前手配および調達を提供する。
ワークロード・レイヤ90は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、取引処理95、ならびに累積的な脆弱性リスク評価に基づくアプリケーション選択96、を含む。
このように、例示的な実施形態では、DMAマッピングされたページを移行する際の遅延の最小化、およびその他の関連する特徴、機能、または動作のためのコンピュータ実装方法、システムまたは装置、およびコンピュータ・プログラム製品を提供している。一実施形態またはその一部をあるタイプのデバイスに関して説明する場合、コンピュータ実装方法、システムもしくは装置、コンピュータ・プログラム製品、またはそれらの一部は、そのタイプのデバイスの適切かつ同等な表現と共に使用するように適合または構成される。
一実施形態をアプリケーションに実装されるものとして説明する場合、ソフトウェア・アズ・ア・サービス(SaaS)モデルでのアプリケーションの配信は、例示的な実施形態の範囲内で企図している。SaaSモデルでは、一実施形態を実装するアプリケーションの機能は、クラウド・インフラストラクチャでアプリケーションを実行することによって、ユーザに提供される。ユーザは、様々なクライアント・デバイスを使用して、Webブラウザ(たとえば、Webベースの電子メール)などのシン・クライアント・インターフェース、またはその他の軽量クライアント・アプリケーションを介して、アプリケーションにアクセスすることができる。ユーザは、クラウド・インフラストラクチャのネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基盤となるクラウド・インフラストラクチャを管理も制御もしない。いくつかのケースでは、ユーザは、SaaSアプリケーションの機能すら管理も制御もしない場合がある。他のいくつかのケースでは、アプリケーションのSaaS実装形態は、制限されたユーザ固有のアプリケーション構成設定の可能な例外を許可し得る。
本発明は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであり得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶可能な有形のデバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリー・スティック(R)、フレキシブル・ディスク、命令が記録されたパンチ・カードまたは溝の隆起構造などの機械的にコード化されたデバイス、およびこれらの任意の適切な組み合わせが含まれる。コンピュータ可読記憶媒体は、本明細書で使用する場合、たとえば、電波または他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、または有線で伝送される電気信号などの一過性の信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行され得る。最後のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータへの接続がなされ得る。いくつかの実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することによって、電子回路を個人向けにし得る。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装できることは理解されよう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供して、それらの命令がコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行された場合に、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実装するための手段が生成されるようなマシンを生成し得る。また、これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定の方法で機能するように指示することが可能なコンピュータ可読記憶媒体に記憶して、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為の態様を実装する命令を含む製造品を構成するようにし得る。
また、コンピュータ可読プログラム命令をコンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させることによって、それらの命令がコンピュータ、他のプログラム可能装置、または他のデバイス上で実行された場合に、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為が実装されるようなコンピュータ実装処理を生成し得る。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理的機能(複数可)を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実装形態では、ブロックに記載した機能は、図示した順序以外で行われ得る。たとえば、関与する機能に応じて、連続して示した2つのブロックは、実際には実質的に同時に実行され得、またはそれらのブロックは、場合により逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、指定された機能もしくは行為を実行するか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用のハードウェア・ベースのシステムによって実装できることにも気付くであろう。
Claims (25)
- メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定すること(604)と、
前記メモリ再割り当てプロセスの完了に続いて、前記メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延を実行すること(606)であって、前記アクセス前遅延は前記メモリ・ページのセット内の各メモリ・ページに対して同時に実行される、前記実行すること(606)と、
を含む、コンピュータ実装方法。 - DMA動作に関して有効化されているメモリ・ページに対して、DMA遅延フラグを設定すること
をさらに含む、請求項1に記載のコンピュータ実装方法。 - 前記メモリ・ページのセット内のメモリ・ページに対して前記DMA遅延フラグが設定されていると判定したことに応答して、前記アクセス前遅延が実行される、請求項2に記載のコンピュータ実装方法。
- DMA動作に関して有効化されている前記メモリ・ページのセットに対して、DMA遅延フラグを設定すること
をさらに含む、請求項1に記載のコンピュータ実装方法。 - 前記メモリ・ページのセットに対して前記DMA遅延フラグが設定されていると判定したことに応答して、前記アクセス前遅延が実行される、請求項4に記載のコンピュータ実装方法。
- 前記アクセス前遅延は、プログラム命令の実行を所定の時間遅延させることによって実行される、請求項1に記載のコンピュータ実装方法。
- 第2のメモリ再割り当てプロセス中に、再割り当てされる第2のメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定すること(608)と、
前記メモリ・ページのセット内のDMA動作に関して有効化されているメモリ・ページの再割り当てから閾値時間よりも長い時間がまだ経過していないと判定したことに応答して、前記メモリ再割り当てプロセスの完了に続いて、前記第2のメモリ・ページのセットへの第2の初期データの書き込みの前に、前記アクセス前遅延を実行すること(606)であって、前記アクセス前遅延は前記第2のメモリ・ページのセット内の各メモリ・ページに対して同時に実行される、前記実行すること(606)と、
をさらに含む、請求項1に記載のコンピュータ実装方法。 - DMAマッピングされたページを移行する際の遅延を最小化するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、
1つまたは複数のコンピュータ可読記憶媒体と、前記1つまたは複数のコンピュータ可読記憶媒体にまとめて記憶されたプログラム命令と、を含み、前記プログラム命令は、
メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定するプログラム命令(604)と、
前記メモリ再割り当てプロセスの完了に続いて、前記メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延を実行するプログラム命令(606)であって、前記アクセス前遅延は前記メモリ・ページのセット内の各メモリ・ページに対して同時に実行される、前記実行するプログラム命令(606)と、
を含む、コンピュータ・プログラム製品。 - DMA動作に関して有効化されているメモリ・ページに対して、DMA遅延フラグを設定するプログラム命令
をさらに含む、請求項8に記載のコンピュータ・プログラム製品。 - 前記メモリ・ページのセット内のメモリ・ページに対して前記DMA遅延フラグが設定されていると判定したことに応答して、前記アクセス前遅延が実行される、請求項9に記載のコンピュータ・プログラム製品。
- DMA動作に関して有効化されている前記メモリ・ページのセットに対して、DMA遅延フラグを設定するプログラム命令
をさらに含む、請求項8に記載のコンピュータ・プログラム製品。 - 前記メモリ・ページのセットに対して前記DMA遅延フラグが設定されていると判定したことに応答して、前記アクセス前遅延が実行される、請求項11に記載のコンピュータ・プログラム製品。
- 前記アクセス前遅延は、プログラム命令の実行を所定の時間遅延させることによって実行される、請求項8に記載のコンピュータ・プログラム製品。
- 第2のメモリ再割り当てプロセス中に、再割り当てされる第2のメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定すること(608)と、
前記メモリ・ページのセット内のDMA動作に関して有効化されているメモリ・ページの再割り当てから閾値時間よりも長い時間がまだ経過していないと判定したことに応答して、前記メモリ再割り当てプロセスの完了に続いて、前記第2のメモリ・ページのセットへの第2の初期データの書き込みの前に、前記アクセス前遅延を実行すること(606)であって、前記アクセス前遅延は前記第2のメモリ・ページのセット内の各メモリ・ページに対して同時に実行される、前記実行すること(606)と、
をさらに含む、請求項8に記載のコンピュータ・プログラム製品。 - 前記記憶されたプログラム命令は、ローカル・データ処理システムの前記1つまたは複数の記憶媒体のうちの少なくとも1つに記憶され、前記記憶されたプログラム命令は、リモート・データ処理システムからネットワークを介して転送される、請求項8に記載のコンピュータ・プログラム製品。
- 前記記憶されたプログラム命令は、サーバ・データ処理システムの前記1つまたは複数の記憶媒体のうちの少なくとも1つに記憶され、前記記憶されたプログラム命令は、ネットワークを介してリモート・データ処理システムにダウンロードされ、前記リモート・データ処理システムに関連付けられたコンピュータ可読ストレージ・デバイスで使用される、請求項8に記載のコンピュータ・プログラム製品。
- 前記コンピュータ・プログラム製品は、クラウド環境内のサービスとして提供される、請求項8に記載のコンピュータ・プログラム製品。
- 1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読ストレージ・デバイスと、プログラム命令と、を含むコンピュータ・システムであって、前記プログラム命令は、前記1つまたは複数のストレージ・デバイスのうちの少なくとも1つに記憶され、前記1つまたは複数のプロセッサのうちの少なくとも1つによって前記1つまたは複数のメモリのうちの少なくとも1つを介して実行され、前記記憶されたプログラム命令は、
メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定するプログラム命令(604)と、
前記メモリ再割り当てプロセスの完了に続いて、前記メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延を実行するプログラム命令(606)であって、前記アクセス前遅延は前記メモリ・ページのセット内の各メモリ・ページに対して同時に実行される、前記実行するプログラム命令(606)と、
を含む、コンピュータ・システム。 - DMA動作に関して有効化されているメモリ・ページに対して、DMA遅延フラグを設定するプログラム命令
をさらに含む、請求項18に記載のコンピュータ・システム。 - 前記メモリ・ページのセット内のメモリ・ページに対して前記DMA遅延フラグが設定されていると判定したことに応答して、前記アクセス前遅延が実行される、請求項19に記載のコンピュータ・システム。
- DMA動作に関して有効化されている前記メモリ・ページのセットに対して、DMA遅延フラグを設定すること
をさらに含む、請求項18に記載のコンピュータ・システム。 - 前記メモリ・ページのセットに対して前記DMA遅延フラグが設定されていると判定したことに応答して、前記アクセス前遅延が実行される、請求項21に記載のコンピュータ・システム。
- 第2のメモリ再割り当てプロセス中に、再割り当てされる第2のメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定するプログラム命令(608)と、
前記メモリ・ページのセット内のDMA動作に関して有効化されているメモリ・ページの再割り当てから閾値時間よりも長い時間がまだ経過していないと判定したことに応答して、前記メモリ再割り当てプロセスの完了に続いて、前記第2のメモリ・ページのセットへの第2の初期データの書き込みの前に、前記アクセス前遅延を実行するプログラム命令(606)であって、前記アクセス前遅延は前記第2のメモリ・ページのセット内の各メモリ・ページに対して同時に実行される、前記実行するプログラム命令(606)と、
をさらに含む、請求項18に記載のコンピュータ・システム。 - 1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読ストレージ・デバイスと、プログラム命令と、を含むデータ処理環境であって、前記プログラム命令は、前記1つまたは複数のストレージ・デバイスのうちの少なくとも1つに記憶され、前記1つまたは複数のプロセッサのうちの少なくとも1つによって前記1つまたは複数のメモリのうちの少なくとも1つを介して実行され、前記記憶されたプログラム命令は、
メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定するプログラム命令と、
前記メモリ再割り当てプロセスの完了に続いて、前記メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延を実行するプログラム命令であって、前記アクセス前遅延は前記メモリ・ページのセット内の各メモリ・ページに対して同時に実行される、前記実行するプログラム命令と、
を含む、データ処理環境。 - メモリ・コントローラと、
メモリ・マネージャと、
を備え、前記メモリ・マネージャは前記メモリ・コントローラに動作を実行させるように構成され、前記動作は、
メモリ再割り当てプロセス中に、再割り当てされるメモリ・ページのセットがそれぞれダイレクト・メモリ・アクセス(DMA)動作に関して有効化されていることを判定することと、
前記メモリ再割り当てプロセスの完了に続いて、前記メモリ・ページのセットに初期データを書き込む前に、アクセス前遅延を実行することであって、前記アクセス前遅延は前記メモリ・ページのセット内の各メモリ・ページに対して同時に実行される、前記実行することと、
を含む、メモリ管理サブシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/989,248 | 2020-08-10 | ||
US16/989,248 US11455264B2 (en) | 2020-08-10 | 2020-08-10 | Minimizing delay while migrating direct memory access (DMA) mapped pages |
PCT/EP2021/072163 WO2022034024A1 (en) | 2020-08-10 | 2021-08-09 | Minimizing delay while migrating direct memory access (dma) mapped pages |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023536973A true JP2023536973A (ja) | 2023-08-30 |
Family
ID=77398565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023507753A Pending JP2023536973A (ja) | 2020-08-10 | 2021-08-09 | ダイレクト・メモリ・アクセス(dma)マッピングされたページを移行する際の遅延の最小化 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11455264B2 (ja) |
EP (1) | EP4182797A1 (ja) |
JP (1) | JP2023536973A (ja) |
KR (1) | KR20230034319A (ja) |
CN (1) | CN116075813A (ja) |
AU (1) | AU2021325335B2 (ja) |
WO (1) | WO2022034024A1 (ja) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE60223051T2 (de) | 2001-08-29 | 2008-07-24 | Analog Devices Inc., Norwood | Anordnung und verfahren zum schnellen einschalten einer phase-locked loop |
US6804729B2 (en) * | 2002-09-30 | 2004-10-12 | International Business Machines Corporation | Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel |
US6874076B2 (en) | 2002-09-30 | 2005-03-29 | International Business Machines Corporation | Method, system, and computer program product for migrating data from one real page to another |
US8112618B2 (en) | 2004-04-08 | 2012-02-07 | Texas Instruments Incorporated | Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making |
US7533198B2 (en) | 2005-10-07 | 2009-05-12 | International Business Machines Corporation | Memory controller and method for handling DMA operations during a page copy |
US7734843B2 (en) * | 2006-05-25 | 2010-06-08 | International Business Machines Corporation | Computer-implemented method, apparatus, and computer program product for stalling DMA operations during memory migration |
US8738860B1 (en) | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US10068054B2 (en) | 2013-01-17 | 2018-09-04 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform |
US9870171B2 (en) | 2015-06-25 | 2018-01-16 | International Business Machines Corporation | Affinity-aware parallel zeroing of memory for initialization of large pages in non-uniform memory access (NUMA) servers |
US9760512B1 (en) * | 2016-10-21 | 2017-09-12 | International Business Machines Corporation | Migrating DMA mappings from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
CN110941565B (zh) | 2018-09-25 | 2022-04-15 | 北京算能科技有限公司 | 用于芯片存储访问的内存管理方法和装置 |
-
2020
- 2020-08-10 US US16/989,248 patent/US11455264B2/en active Active
-
2021
- 2021-08-09 EP EP21755978.0A patent/EP4182797A1/en active Pending
- 2021-08-09 WO PCT/EP2021/072163 patent/WO2022034024A1/en unknown
- 2021-08-09 KR KR1020237002927A patent/KR20230034319A/ko active Search and Examination
- 2021-08-09 AU AU2021325335A patent/AU2021325335B2/en active Active
- 2021-08-09 CN CN202180056071.1A patent/CN116075813A/zh active Pending
- 2021-08-09 JP JP2023507753A patent/JP2023536973A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
CN116075813A (zh) | 2023-05-05 |
EP4182797A1 (en) | 2023-05-24 |
US20220043764A1 (en) | 2022-02-10 |
AU2021325335B2 (en) | 2023-06-29 |
KR20230034319A (ko) | 2023-03-09 |
WO2022034024A1 (en) | 2022-02-17 |
AU2021325335A1 (en) | 2023-02-09 |
US11455264B2 (en) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11023286B2 (en) | Container based service management | |
US11061709B2 (en) | Storage management for deployment of virtual machine | |
US8909734B2 (en) | Migrating data between networked computing environments | |
US8825863B2 (en) | Virtual machine placement within a server farm | |
US8478961B2 (en) | Dynamic migration of virtual machines based on workload cache demand profiling | |
US20170004062A1 (en) | Creating software performance testing environment based on virtual machine | |
US9575657B2 (en) | Dataset replica migration | |
US11099895B2 (en) | Estimating and managing resource provisioning speed based on provisioning instruction | |
US10789008B2 (en) | Reducing write collisions in data copy | |
JP2021513137A (ja) | 階層型ストレージ管理システムにおけるデータ・マイグレーション | |
US10394589B2 (en) | Vertical replication of a guest operating system | |
AU2021325335B2 (en) | Minimizing delay while migrating direct memory access (dma) mapped pages | |
US20210073033A1 (en) | Memory management using coherent accelerator functionality | |
US11789845B2 (en) | Software object identification using record generating code insertion | |
WO2023024621A1 (en) | Conditionally deploying a reusable group of containers for a job based on available system resources | |
US11526437B1 (en) | Heap space management | |
US11099876B2 (en) | Self-determination for cancellation of in-progress memory removal from a virtual machine | |
JP2022089783A (ja) | セルフ・クリアリング・データ移動支援の方法、システム、およびコンピュータ・プログラム、およびコンピュータ可読な記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230217 |
|
RD16 | Notification of change of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7436 Effective date: 20230405 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240123 |