JP2008191949A - マルチコアシステムおよびマルチコアシステムの負荷分散方法 - Google Patents

マルチコアシステムおよびマルチコアシステムの負荷分散方法 Download PDF

Info

Publication number
JP2008191949A
JP2008191949A JP2007026099A JP2007026099A JP2008191949A JP 2008191949 A JP2008191949 A JP 2008191949A JP 2007026099 A JP2007026099 A JP 2007026099A JP 2007026099 A JP2007026099 A JP 2007026099A JP 2008191949 A JP2008191949 A JP 2008191949A
Authority
JP
Japan
Prior art keywords
load
information
load distribution
core
shared
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
JP2007026099A
Other languages
English (en)
Inventor
Kazuhiro Kusano
和寛 草野
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2007026099A priority Critical patent/JP2008191949A/ja
Publication of JP2008191949A publication Critical patent/JP2008191949A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】CPUの負荷だけでなく、メモリアクセス時の負荷を負荷分散の対象にするマルチコアプロセッサおよびマルチコアシステムの負荷分散方法を提供する。
【解決手段】プログラム実行中に一定間隔で、負荷分散の管理手段21が起動され、負荷情報収集手段22がハードウェアの各コアから負荷情報を取得し、取得した負荷情報23と24を利用して、負荷分散判定手段25は、システムにおける負荷の偏りを判定する。負荷の状態が判定基準を超える場合、負荷分散が必要であると判断して、移動対象選択手段26で移動対象スレッドとその移動先を選択する。移動対象スレッドとその移動先はスレッド移動手段27に通知され、実際のスレッド移動が行われる。
【選択図】図4

Description

本発明は、マルチコアプロセッサを複数使用したシステムで実行する並列プログラムの負荷分散に関し、特に、メモリアクセスを含めて効率的な並列実行を行うマルチコアシステムおよびマルチコアシステムの負荷分散方法に関する。
今日、マルチコアプロセッサを複数接続した共有メモリシステムは、マルチコアプロセッサと共有メモリ、それらを接続するバスまたはネットワークから構成されることが典型的である。
マルチコアプロセッサの場合、一般的な構成では複数のコアがキャッシュを共有し、さらにメモリへアクセスするインタフェースも共有している。
このシステムは共有メモリシステムであるが、マルチコアを構成する各CPUがメモリへアクセスするバスを共有しているため、従来の共有メモリと比較すると、メモリへのアクセスの偏りによって待ち時間が大きくなる可能性がある。
マルチコアは共有キャッシュのミスが複数同時に発生した場合、プロセッサからメモリへのアクセスは、プロセッサ内部で調停が行われて逐次的なアクセスとなるため、遅延が大きくなることが考えられる。さらに、複数のマルチコアプロセッサが共有メモリにアクセスする際にも、同様の現象が発生することが考えられる。そこで、この現象を防止するための技術が提案されている。
例えば特許文献1では、マルチコアなどを使用した計算機システムの資源割り当て方法が提案されている。この割り当ては、プログラムの静的解析情報から、実行に必要な資源や演算距離テーブルを利用して、新しいプロセスの配置を決定する。
また特許文献2では、並列計算機の負荷分散方法として、プロセッサの負荷と通信の負荷を考慮した割り当てを行う。ここでは、スイッチを用いて接続されている並列計算機の利用状況を調べ、関連するプロセスとの通信に使用するスイッチの負荷が最も低くなるように割り当てる。
さらに特許文献3では、複数のスレッドコンテキストを保持するマルチスレッディングプロセッサにおいて、効率的に実行可能なスレッドを組み合わせて実行する。その手段は、スレッドの動作状態を判定し、それを基準にスレッド数やその組み合わせを決定する。スレッドの動作状態は、フェッチストール回数、メモリアクセスレイテンシ、キャッシュミス回数、IPCカウンタのいずれか1つを利用する。
特開2006−24180号公報 特開平9−34847号公報 WO2004/044745号公報
しかしながら、従来の負荷分散では、コアの負荷状態を利用して負荷分散を行っている。マルチコアプロセッサの場合、複数のコアがメモリインタフェースを共有し、さらに共有メモリを全てのプロセッサが共有している。このため、演算に必要なデータアクセスにおける競合が発生する可能性が高く、メモリアクセスの遅延が効率的な実行を阻害し、性能低下の原因となることが考えられる。
また、マルチコアプロセッサの場合、スレッドが複数同時に実行しているので、共有資源でアクセス競合が発生する可能性があり、これが実行性能の低下要因となる可能性がある。そのため、共有資源である共有キャッシュやメモリアクセスに関する情報が必要となる。
また、メモリアクセスの競合は、並列実行の単位であるスレッドを各コアへどのように割り当てるかにもよるため、静的にはわからない。
そこで本発明は、マルチコアプロセッサを複数使用したシステムで実行する並列プログラムの負荷分散において、CPUの負荷だけでなく、キャッシュやメモリのアクセス時の負荷情報を利用して、メモリアクセス時の負荷を負荷分散の対象にすることで、メモリアクセスを含めて効率的な並列実行を行う負荷分散を行うマルチコアシステムおよびマルチコアシステムの負荷分散方法を提供することを目的とする。
上記の目的を達成するため、請求項1に記載の発明は、複数のコアプロセッサを有する複数のマルチコアプロセッサと、各マルチコアプロセッサの資源を共有する共有資源とを有するマルチコアシステムであって、前記各マルチコアプロセッサの負荷情報と、前記共有資源に対するアクセス時の負荷情報とを取得する負荷情報収集手段と、前記負荷情報収集手段により取得した前記各マルチコアプロセッサの負荷情報と、前記アクセス時の負荷情報との条件に基づいて、負荷分散を行うか否かの判定を行う負荷分散判定手段と、前記負荷分散判定手段により、負荷分散を行うと判断された際には、負荷を分散する負荷分散手段とを有するマルチコアシステムであることを特徴とする。
請求項2に記載の発明は、請求項1に記載のマルチコアシステムにおいて、前記負荷分散判定手段は、前記条件の少なくとも1つに基づいて前記負荷の基準値を設け、前記負荷が前記基準値を超えた際に、負荷分散を行うと判断することを特徴とする。
請求項3に記載の発明は、請求項1または2に記載のマルチコアシステムにおいて、前記負荷分散判定手段により、前記負荷分散を行うと判断された際には、前記負荷分散手段は、前記負荷分散を実行する際に、前記負荷が均等になるように前記負荷分散を実行することを特徴とする。
請求項4に記載の発明は、請求項1から3のいずれか1に記載のマルチコアシステムにおいて、前記負荷分散は、スレッドの移動対象を選択し、選択された対象に前記スレッドを移動することで前記負荷が均等になるように前記負荷分散を行うことを特徴とする。
請求項5に記載の発明は、請求項1または2に記載のマルチコアシステムにおいて、前記条件は、前記各マルチコアプロセッサに対してOSが管理している前記スレッドを割り当てる割当情報、前記各マルチコアプロセッサの性能を示す計算能力情報、前記共有資源に対するアクセス性能を示すアクセス性能情報、前記共有資源に対する利用方法を示す共有資源利用情報の少なくとも1つであることを特徴とする。
請求項6に記載の発明は、請求項5に記載のマルチコアシステムにおいて、前記割当情報は、前記各マルチコアプロセッサに割り当てられている前記スレッドの実行時間情報と、データを待っている状態に関する情報と、ローカルなキャッシュと共有キャッシュとのキャッシュミス回数情報とを含むことを特徴とする。
請求項7に記載の発明は、請求項1に記載のマルチコアシステムにおいて、前記共有資源は、共有メモリであり、前記アクセス時の負荷情報は、前記共有メモリに対するメモリアクセス時の負荷情報であり、前記メモリアクセス時の負荷情報は、前記マルチコアプロセッサの各コアプロセッサが共有している資源である共有キャッシュと、メモリインタフェースとの利用状況に関する情報と、前記共有メモリにアクセスするバスの利用情報とを含むことを特徴とする。
請求項8に記載の発明は、複数のコアプロセッサを有する複数のマルチコアプロセッサと、各マルチコアプロセッサの資源を共有する共有資源との負荷情報を基に負荷分散を行うマルチコアシステムの負荷分散方法であって、前記各マルチコアプロセッサの前記負荷情報と、前記共有資源に対するアクセス時の前記負荷情報とを取得する負荷情報収集工程と、前記負荷情報収集工程により取得した前記各マルチコアプロセッサの前記負荷情報と、前記アクセス時の前記負荷情報との条件に基づいて、前記負荷分散を行うか否かの判定を行う負荷分散判定工程と、前記負荷分散判定工程により、前記負荷分散を行うと判断された際には、負荷を分散する負荷分散工程とを有するマルチコアシステムの負荷分散方法であることを特徴とする。
請求項9に記載の発明は、請求項8に記載のマルチコアシステムの負荷分散方法において、前記負荷分散判定工程は、前記条件の少なくとも1つに基づいて前記負荷の基準値を設け、前記負荷が前記基準値を超えた際に、前記負荷分散を行うと判断することを特徴とする。
請求項10に記載の発明は、請求項8または9に記載のマルチコアシステムの負荷分散方法において、前記負荷分散判定工程により、前記負荷分散を行うと判断された際には、前記負荷分散手段は、前記負荷分散を実行する際に、前記負荷が均等になるように前記負荷分散を実行することを特徴とする。
請求項11に記載の発明は、請求項8から10のいずれか1項に記載のマルチコアシステムの負荷分散方法において、前記負荷分散は、スレッドの移動対象を選択し、選択された対象に前記スレッドを移動することで前記負荷が均等になるように前記負荷分散を行うことを特徴とする。
請求項12に記載の発明は、請求項8または9に記載のマルチコアシステムの負荷分散方法において、前記条件は、前記各マルチコアプロセッサに対してOSが管理しているスレッドを割り当てる割当情報、前記各マルチコアプロセッサの性能を示す計算能力情報、前記共有資源に対するアクセス性能を示すアクセス性能情報、前記共有資源に対する利用方法を示す共有資源利用情報の少なくとも1つであることを特徴とする。
請求項13に記載の発明は、請求項12に記載のマルチコアシステムの負荷分散方法において、前記割当情報は、前記各マルチコアプロセッサに割り当てられている前記スレッドの実行時間情報と、データを待っている状態に関する情報と、ローカルなキャッシュと共有キャッシュとのキャッシュミス回数情報とを含むことを特徴とする。
請求項14に記載の発明は、請求項8に記載のマルチコアシステムの負荷分散方法において、前記共有資源は、共有メモリであり、前記アクセス時の負荷情報は、前記共有メモリに対するメモリアクセス時の負荷情報であり、前記メモリアクセス時の負荷情報は、前記マルチコアプロセッサの各コアプロセッサが共有している資源である共有キャッシュと、メモリインタフェースとの利用状況に関する情報と、前記共有メモリにアクセスするバスの利用情報とを含むことを特徴とする。
本発明によれば、負荷分散の基準として、コアの負荷情報に加えて、メモリアクセスの負荷情報を利用する。そして、コアの負荷が高い場合だけでなく、メモリアクセスの負荷が高く、コアの実行で待ち時間が長くなっている場合も負荷分散の対象とする。また、負荷分散の移動先を選ぶ場合も、同様の情報を利用する。これにより、システム全体として効率的な実行が可能な負荷分散を実現するマルチコアシステムおよびマルチコアシステムの負荷分散方法を提供することを可能とする。
次に、本発明を実施するための好適な実施の形態について説明する。本実施形態のマルチコアシステムの動作について図1、図2を用いて詳細に説明する。図1は、本実施形態のマルチコアシステムで構成される共有メモリシステムの典型的な例をブロック図で示した一例である。図2は、本実施形態におけるマルチコアの構成をブロック図で示した一例である。
図1はマルチコアで構成された共有メモリシステムの典型的な構成の一例である。このシステムは、マルチコア1〜マルチコア3が、共有メモリ5に対して、接続網4を用いて接続される。マルチコアプロセッサは、典型的には図2に示す構造をとる。図2のマルチコア10は、内部にローカルキャッシュを含むことができる複数のCPUであるコア11〜13を含み、それが接続網16を介して共有キャッシュ14とメモリインタフェース15に接続される。
図2に示すマルチコアプロセッサを要素として構成された図1の共有メモリシステムは、その性能を最大限に利用するために、プログラムを並列化して並列実行が行われる。共有メモリにおける並列実行では、一般にループの繰り返し間に依存関係のないループを並列化して、スレッドに分割して並列に実行される。
並列化された各スレッドは、OSによってマルチコア1〜マルチコア3の各コア11、〜コア13に対して割り当てられる。並列プログラムの各スレッドの負荷は、一般に割り当て時点では不明である。このため、OSはスレッドを空き状態のコアに適宜割り当てるため、スレッドの割り当ては実行時の状況に依存される。
この後、各スレッドは、それぞれプログラムの一部を実行する。その負荷は、担当するプログラムの処理に依存されるため、同じプロセッサ上のコアに割り当てられたスレッドの組み合わせにより、共有キャッシュやメモリアクセスインタフェースの負荷が大きく変わることもある。このような実行時の負荷のばらつきを平準化するため、負荷分散機能は、スレッドの移動を行う。
プロセッサの負荷情報では、負荷の高さだけでなく、各コアでのキャッシュミスとそのために発生したプロセッサの待ち時間を利用する。また、マルチコアプロセッサのコアが共有しているメモリインタフェースの負荷情報、共有メモリに対するアクセスの負荷情報を利用し、メモリアクセスがシステム性能の限界まで使用されているかを確認する。これらの情報を用いて、負荷分散を必要とする偏りが存在するか確認する。負荷の偏りがあった場合、負荷分散の移動対象となるスレッドを選定する。
次に、移動先を選ぶが、ここでもコアの負荷とメモリアクセスの負荷情報を利用する。その後、スレッドが割り当てられていないコアやメモリを含めた負荷の低いコアを選び、スレッドの移動(マイグレーション)を行う。この結果、各マルチコアからのメモリアクセスも均等化され、待ち時間が少ない、効率的実行が可能な配置が実現される。
(実施形態1)
マルチコアシステム上での並列プログラムの実行では、一定時間間隔で負荷分散が行われる。この負荷分散は図3に示す手順で行う。図3は、本実施形態のマルチシステムにおける負荷分散方法をフローチャート図で示す。
まず最初に、負荷分散の処理で利用する各種の情報を取得する(ステップS101)。そして、この情報を用いて負荷の偏りを調べ、偏りがある場合に負荷を分散するためにスレッドの移動を行う。この情報には、コア11〜コア13の負荷情報、キャッシュミス回数やメモリアクセスに関する情報などがある。
次に、各コアの負荷情報として、実際に計算を行っている時間や計算に必要なデータを待っている時間を調べる。これにより、通常の負荷分散で利用するCPUの負荷の状態と、各スレッドを実行している時間で実際に処理をしている時間とデータ待ちの時間がわかる。次に、プロセッサの負荷情報として、複数のコアが利用している共有キャッシュおよびメモリインタフェースの情報を調べる(ステップS102)。これは、プロセッサからメモリにどの程度アクセスしているか、またプロセッサからメモリへのアクセスが、ハードの性能に対してどの程度行われているかを確認する。そして、システムの負荷情報として、共有メモリに関する負荷情報を取得する(ステップS103)。これはシステム全体として、共有メモリに対するアクセスがどの程度行われているかを明らかにする。
以上の情報と、OSが管理するスレッドの割り当てに関する情報とを利用して、まずシステム全体で負荷の偏りがどの程度であるかを調べる(ステップS104)。基本的に各コアの負荷に大きな偏りがある場合、およびプロセッサからメモリへのアクセスがその性能の限界近くまで行われ、プロセッサ内のコアで待ち時間が大きくなっている場合(ステップS104/YES)、負荷分散を行う。上記以外の場合(ステップS104/NO)、処理を終了する。負荷分散を行う場合、負荷を均等化するため、移動対象となるスレッドを選び、その移動先のコアを決定する(ステップS105)。そして、選んだスレッドを新しいコアに移動して実行を再開する(ステップS106)。これにより、コアにおける計算負荷の均等化に加えて、プロセッサからメモリへのアクセスを効率的に行う割り当てを実現する。
移動対象のスレッドと移動先のコアは、収集した情報とシステムの性能情報を利用して決定される。移動スレッド候補を選ぶ一例として、メモリアクセスに大きな差はないが、コアの負荷が大きく異なり、かつ複数のスレッドが割り当てられている場合がある。また、メモリアクセス時の負荷が特定のプロセッサに集中して性能の上限近くまでになっている場合、コアの負荷に関わらず、そのプロセッサのコアに割り当てられているスレッドが移動対象となる。さらに、少数のコアで高い負荷が発生しており、それ以外の全てのコアで負荷があまり高くない場合、負荷を均等にするために、負荷の高いスレッドのみをプロセッサに残して、他のスレッドを全て他のプロセッサに移動することも考えられる。
スレッドの移動先のコアは、負荷を均等にする可能性の高いことが基準になる。しかし、スレッド移動に伴う性能への影響を事前に知ることはできないため、移動対象を選ぶのに利用した情報で移動した効果を見積もり、移動先を決定する。この時、各コアの負荷だけでなく、メモリアクセスの負荷を均等にすることも考慮する。一例として、スレッドの割り当てられていないコアが複数ある場合、プロセッサからメモリへのアクセスの負荷が低いプロセッサのコアを選ぶ。これにより、コアの負荷だけでなく、プロセッサからのメモリアクセスの負荷を考慮したスレッド配置が実現される。
本実施形態によれば、マルチコアシステムにおける並列プログラムのメモリアクセスを含めた効率的並列実行を行うスレッド配置を、実行時に実現することが可能になる。その理由は、負荷分散を行う際にメモリアクセスの負荷情報を参照し、従来にも行われているコアの負荷情報を基に負荷分散を行う技術とあわせて負荷分散の判定を行うことで、マルチコアシステムの負荷を分散しているためである。
(実施形態2)
具体例として、4つのコアを持つマルチコアプロセッサが4つと共有メモリを、バスで接続した図1と同様の構成のシステムについて説明する。このシステムで並列プログラムを実行させる場合、一定時間を経過すると以下に述べる手順で負荷分散が行われる。
提案手法では、コアに割り当てられているスレッドの情報として、スレッドの実行時間、そのうちデータを待っている状態に関する情報、ローカルなキャッシュと共有キャッシュのそれぞれに関して、キャッシュミス回数などの情報を取得する。次に、メモリアクセスに関する情報として、プロセッサに含まれる複数のコアが共有している資源である、共有キャッシュとメモリインタフェースの利用状況に関する情報、そしてシステムの共有メモリにアクセスするバスの利用情報を取得する。これらの情報は、実行性能の解析などを目的として、ツールやOSが利用できる形でシステムやプロセッサが提供している機能を利用して取得する。
ここで、スレッドの割り当てがどうなっているかは、プログラムおよびスレッドの実行開始時点の状況により様々な可能性が存在する。例えば、並列プログラムでスレッドが6個生成され実行しており、各プロセッサのコアへ重複なく4/2/0/0と割り当てられているとする。この状態は各コアにスレッドが1つ割り当てられているため、コアの負荷のみを利用した負荷分散ではスレッドの移動は発生しない。
しかし、メモリアクセスを見た場合は、二つのプロセッサに負荷が集中しているため、メモリアクセスの負荷を判定基準に利用している提案手法では、この場合も負荷分散の対象にすることが可能となる。
負荷分散の判定基準は、システムの性能と管理方針で様々な設定が可能である。例えば、プロセッサに対してできるだけ均等にスレッドを割り当てることや、共有キャッシュを有効に活用するため、メモリ負荷の上限までは同じプロセッサのコアを割り当てることなどが考えられる。
負荷に偏りがある場合でも、メモリアクセス性能からみて負荷が低く、実行性能を低下させる要因となっていない場合には、スレッド移動のオーバヘッドがあるため、通常負荷分散は行わない。
前記の割り当てにおいて、共有キャッシュのミスが多く発生し、さらに各スレッドのデータ待ち時間も大きい場合、メモリへのアクセスが性能低下の原因となっている可能性がある。この場合はメモリアクセス情報から、メモリへのアクセスがシステム性能と比べてどの程度であるかを確認する。そして、システム性能と同じレベルのアクセスがあり、かつスレッドのデータ待ち時間がメモリ競合がない場合と比べて著しく大きい場合、メモリアクセスがネックとなり性能が低下していると考えられる。したがって、このような場合はスレッドをメモリ負荷の低いプロセッサに移動することで、競合が解消され、性能向上が期待できる。そこで次に、負荷の偏りが確認されたプロセッサに割り当てられているスレッドについて、負荷分散で移動の対象となるスレッドを決定する。スレッドの実行情報から、共有キャッシュのミスヒット回数やデータ待ち時間などを利用し、メモリへのアクセス頻度や、競合のない場合の待ち時間と比べてどの程度待ち時間が長いのか、などメモリによる実行への影響を調べる。
この結果とシステムの負荷分散の判定基準から、移動対象のスレッドを決定する。判定基準は、システムの性能や運用方針で決められる。ここでは、メモリアクセスの負荷により、最も影響を受けているスレッドが選ばれたとする。
移動対象のスレッドがメモリアクセスの負荷が原因で決定されたので、移動先もメモリアクセス負荷を基準に決定する。ここで、プロセッサからメモリへのアクセス情報から、二つのプロセッサからメモリアクセスがないことがわかる。また、スレッドの割り当て情報からも、二つのプロセッサとそこに含まれるコアにはスレッドが割り当てられていないことがわかる。そこで、メモリアクセスの負荷を分散するため、この二つのプロセッサの任意の一つを選び、さらにそこに含まれるコアの任意の一つを移動先とする。そして最後に、選択したスレッドを移動先のコアに移動した後、実行を再開する。
(実施形態3)
図4を用いて本実施形態の負荷分散管理手段について説明する。図4は、本実施形態のマルチシステムの負荷分散管理手段を示すブロック図である。
図4に示すように、本手法は、プログラム実行中に一定間隔で、負荷分散の管理手段21が起動され、負荷情報収集手段22がハードウェアの各コアから負荷情報を取得し、コアの負荷情報テーブル23に記録し、さらに、共有メモリなど共有資源のアクセス情報を取得し共有資源の負荷情報テーブル24に記録する。各コアの負荷情報23には、OSが管理しているスレッドの割り当て情報を含まれる。このようにして集めた負荷情報23と24を利用して、負荷分散判定手段25は、システムにおける負荷の偏りを判定する。この判定の基準は、各コアの計算能力やメモリアクセス性能などのハードウェア性能、および利用方法などに依存して決定される、各システムで前もって定められた基準である。負荷の状態が判定基準を超える場合、負荷分散が必要であると判断して、移動対象選択手段26で移動対象スレッドとその移動先を選択する。最後に、移動対象スレッドとその移動先はスレッド移動手段27に通知され、実際のスレッド移動が行われる。
本実施形態によれば、負荷分散を実行する際に、各コアの負荷情報だけでなく、メモリアクセス時の負荷情報も参照することで、マルチコアシステムの並列プログラムにおけるメモリアクセスを含めたスレッド配置を効率的に行うことが可能になる。
また本実施形態のように、マルチコアプロセッサの場合には、複数のスレッドが共有資源を利用して同時に実行するため、負荷が高い場合、特定資源の物理的な上限に達することによって、実行性能が低下することがある。この場合は、その資源に対して最も負荷をかけ、スレッド実行にも影響の大きいスレッドを選んで移動対象とする。実際には、システム全体の負荷の状態を判定し、対象資源の負荷が低いマルチコアがある場合は、負荷の高いスレッドをそのマルチコアに移動することで、残りのスレッドの実行も効率的に実行を継続することができる。
さらに本実施形態によれば、負荷が高く、待ち時間が発生している時に共有資源の利用で物理的上限に達していない場合には、スレッドの移動が必要ないものと判断することができる。
本実施形態のマルチコアシステム、マルチコアシステムの負荷分散を利用すれば、コンピュータプログラムの高速化に適用できる。
マルチコアで構成される共有メモリシステムの典型的な一例を示すブロック図である。 本実施形態におけるマルチコアの構成の一例を示すブロック図である。 本実施形態のマルチシステムにおける負荷分散方法を示すフローチャート図である。 本実施形態のマルチシステムの負荷分散管理手段を示すブロック図である。
符号の説明
1、2、3 マルチコア
4、16 接続網
5 共有メモリ
10 マルチコア
11、12、13 コア
14 共有キャッシュ
15 メモリI/F
21 負荷分散管理手段
22 負荷情報収集手段
23 コアの負荷情報
24 共有資源負荷情報
25 負荷分散判定手段
26 移動対象選択手段
27 スレッド移動手段

Claims (14)

  1. 複数のコアを有する複数のマルチコアプロセッサと、各マルチコアプロセッサの資源を共有する共有資源とを有するマルチコアシステムであって、
    前記各マルチコアプロセッサの負荷情報と、前記共有資源に対するアクセス時の負荷情報とを取得する負荷情報収集手段と、
    前記負荷情報収集手段により取得した前記各マルチコアプロセッサの負荷情報と、前記アクセス時の負荷情報との条件に基づいて、負荷分散を行うか否かの判定を行う負荷分散判定手段と、
    前記負荷分散判定手段により、前記負荷分散を行うと判断された際には、負荷を分散する負荷分散手段とを有するマルチコアシステム。
  2. 前記負荷分散判定手段は、前記条件の少なくとも1つに基づいて前記負荷の基準値を設け、前記負荷が前記基準値を超えた際に、前記負荷分散を行うと判断することを特徴とする請求項1に記載のマルチコアシステム。
  3. 前記負荷分散判定手段により、前記負荷分散を行うと判断された際には、前記負荷分散手段は、前記負荷分散を実行する際に、前記負荷が均等になるように前記負荷分散を実行することを特徴とする請求項1または2に記載のマルチコアシステム。
  4. 前記負荷分散は、スレッドの移動対象を選択し、選択された対象に前記スレッドを移動することで前記負荷が均等になるように前記負荷分散を行うことを特徴とする請求項1から3のいずれか1項に記載のマルチコアシステム。
  5. 前記条件は、前記各マルチコアプロセッサに対してOSが管理している前記スレッドを割り当てる割当情報、前記各マルチコアプロセッサの性能を示す計算能力情報、前記共有資源に対するアクセス性能を示すアクセス性能情報、前記共有資源に対する利用方法を示す共有資源利用情報の少なくとも1つであることを特徴とする請求項1または2に記載のマルチコアシステム。
  6. 前記割当情報は、前記各マルチコアプロセッサに割り当てられている前記スレッドの実行時間情報と、データを待っている状態に関する情報と、ローカルなキャッシュと共有キャッシュとのキャッシュミス回数情報とを含むことを特徴とする請求項5項に記載のマルチコアシステム。
  7. 前記共有資源は、共有メモリであり、前記アクセス時の負荷情報は、前記共有メモリに対するメモリアクセス時の負荷情報であり、前記メモリアクセス時の負荷情報は、前記マルチコアプロセッサの各コアが共有している資源である共有キャッシュと、メモリインタフェースとの利用状況に関する情報と、前記共有メモリにアクセスするバスの利用情報とを含むことを特徴とする請求項1に記載のマルチコアシステム。
  8. 複数のコアを有する複数のマルチコアプロセッサと、各マルチコアプロセッサの資源を共有する共有資源との負荷情報を基に負荷分散を行うマルチコアシステムの負荷分散方法であって、
    前記各マルチコアプロセッサの前記負荷情報と、前記共有資源に対するアクセス時の前記負荷情報とを取得する負荷情報収集工程と、
    前記負荷情報収集工程により取得した前記各マルチコアプロセッサの前記負荷情報と、前記アクセス時の前記負荷情報との条件に基づいて、前記負荷分散を行うか否かの判定を行う負荷分散判定工程と、
    前記負荷分散判定工程により、前記負荷分散を行うと判断された際には、負荷を分散する負荷分散工程とを有するマルチコアシステムの負荷分散方法。
  9. 前記負荷分散判定工程は、前記条件の少なくとも1つに基づいて前記負荷の基準値を設け、前記負荷が前記基準値を超えた際に、前記負荷分散を行うと判断することを特徴とする請求項8に記載のマルチコアシステムの負荷分散方法。
  10. 前記負荷分散判定工程により、前記負荷分散を行うと判断された際には、前記負荷分散手段は、前記負荷分散を実行する際に、前記負荷が均等になるように前記負荷分散を実行することを特徴とする請求項8または9に記載のマルチコアシステムの負荷分散方法。
  11. 前記負荷分散は、スレッドの移動対象を選択し、選択された対象に前記スレッドを移動することで前記負荷が均等になるように前記負荷分散を行うことを特徴とする請求項8から10のいずれか1項に記載のマルチコアシステムの負荷分散方法。
  12. 前記条件は、前記各マルチコアプロセッサに対してOSが管理している前記スレッドを割り当てる割当情報、前記各マルチコアプロセッサの性能を示す計算能力情報、前記共有資源に対するアクセス性能を示すアクセス性能情報、前記共有資源に対する利用方法を示す共有資源利用情報の少なくとも1つであることを特徴とする請求項8または9に記載のマルチコアシステムの負荷分散方法。
  13. 前記割当情報は、前記各マルチコアプロセッサに割り当てられている前記スレッドの実行時間情報と、データを待っている状態に関する情報と、ローカルなキャッシュと共有キャッシュとのキャッシュミス回数情報とを含むことを特徴とする請求項12項に記載のマルチコアシステムの負荷分散方法。
  14. 前記共有資源は、共有メモリであり、前記アクセス時の負荷情報は、前記共有メモリに対するメモリアクセス時の負荷情報であり、前記メモリアクセス時の負荷情報は、前記マルチコアプロセッサの各コアプロセッサが共有している資源である共有キャッシュと、メモリインタフェースとの利用状況に関する情報と、前記共有メモリにアクセスするバスの利用情報とを含むことを特徴とする請求項8に記載のマルチコアシステムの負荷分散方法。
JP2007026099A 2007-02-05 2007-02-05 マルチコアシステムおよびマルチコアシステムの負荷分散方法 Pending JP2008191949A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007026099A JP2008191949A (ja) 2007-02-05 2007-02-05 マルチコアシステムおよびマルチコアシステムの負荷分散方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007026099A JP2008191949A (ja) 2007-02-05 2007-02-05 マルチコアシステムおよびマルチコアシステムの負荷分散方法

Publications (1)

Publication Number Publication Date
JP2008191949A true JP2008191949A (ja) 2008-08-21

Family

ID=39751992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007026099A Pending JP2008191949A (ja) 2007-02-05 2007-02-05 マルチコアシステムおよびマルチコアシステムの負荷分散方法

Country Status (1)

Country Link
JP (1) JP2008191949A (ja)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140146A (ja) * 2008-12-10 2010-06-24 Fujitsu Ltd マルチコアプロセッサ,制御方法および情報処理装置
WO2010093003A1 (ja) * 2009-02-13 2010-08-19 日本電気株式会社 演算資源割当装置、演算資源割当方法、及び、演算資源割当プログラム
CN102110025A (zh) * 2009-12-28 2011-06-29 英特尔公司 避免无效核跳跃和提供硬件辅助的低功率状态选择的机构
KR20110109608A (ko) * 2010-03-31 2011-10-06 삼성전자주식회사 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
WO2011121786A1 (ja) * 2010-03-31 2011-10-06 富士通株式会社 マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム
KR101084876B1 (ko) * 2009-12-10 2011-11-21 주식회사 케이티네트웍스 운영서버에 구성된 cpu의 전체전력소모를 절감하는 방법
WO2011155046A1 (ja) * 2010-06-10 2011-12-15 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法
WO2012066633A1 (ja) * 2010-11-16 2012-05-24 富士通株式会社 通信装置、負荷分散方法、および記録媒体
JPWO2011114478A1 (ja) * 2010-03-17 2013-06-27 富士通株式会社 生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置
US8555289B2 (en) 2010-03-16 2013-10-08 Samsung Electronics Co., Ltd. System and method for dynamically managing tasks for data parallel processing on multi-core system
JP2013246458A (ja) * 2012-05-23 2013-12-09 Hitachi Ltd 検証装置及び検証方法
US8625123B2 (en) 2011-05-09 2014-01-07 Fuji Xerox Co., Ltd. Image forming system, management apparatus, and non-transitory computer readable medium
JP2014130644A (ja) * 2014-04-03 2014-07-10 Fujitsu Ltd マルチプロセッサシステム、制御方法、および制御プログラム
US8949663B2 (en) 2011-12-13 2015-02-03 Toyota Jidosha Kabushiki Kaisha Multi-core processor including a monitored processor core whose process result is to be monitored by a number of processors based on processing load
US9116689B2 (en) 2010-03-04 2015-08-25 Nec Corporation Power consumption reduction method of swapping high load threads with low load threads on a candidate core of a multicore processor
US9342365B2 (en) 2012-03-15 2016-05-17 Samsung Electronics Co., Ltd. Multi-core system for balancing tasks by simultaneously comparing at least three core loads in parallel
JP2016091305A (ja) * 2014-11-05 2016-05-23 コニカミノルタ株式会社 画像形成装置及び並列処理制御プログラム並びに並列処理制御方法
JP2016522488A (ja) * 2013-05-14 2016-07-28 華為技術有限公司Huawei Technologies Co.,Ltd. タスク割り当て方法、タスク割り当て装置、およびネットワークオンチップ
JPWO2014109019A1 (ja) * 2013-01-09 2017-01-19 三菱電機株式会社 プラントエンジニアリングシステム
CN116820787A (zh) * 2023-08-31 2023-09-29 湖北芯擎科技有限公司 负载均衡方法、装置、电子设备及计算机可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06259395A (ja) * 1993-03-02 1994-09-16 Toshiba Corp プロセススケジューリング方式
JPH0830562A (ja) * 1994-07-19 1996-02-02 Nec Corp マルチプロセッサシステム
JPH0981528A (ja) * 1995-09-11 1997-03-28 Nec Eng Ltd マルチプロセッサシステム、それに使用される割込制御装置、および割込制御方法
JPH1078937A (ja) * 1996-07-12 1998-03-24 Nec Corp 複数コンピュータ間の業務分散システム、業務分散方法 および業務分散プログラムを記録した記録媒体
JPH10289120A (ja) * 1997-04-14 1998-10-27 Hitachi Ltd 情報処理装置
JP2004171572A (ja) * 2002-11-21 2004-06-17 Docomo Communications Laboratories Usa Inc サーバ間の負荷分散方法、負荷分散システム、負荷分散サーバおよびプログラム
JP2006024180A (ja) * 2004-06-10 2006-01-26 Hitachi Ltd 計算機システム及びその資源割当て方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06259395A (ja) * 1993-03-02 1994-09-16 Toshiba Corp プロセススケジューリング方式
JPH0830562A (ja) * 1994-07-19 1996-02-02 Nec Corp マルチプロセッサシステム
JPH0981528A (ja) * 1995-09-11 1997-03-28 Nec Eng Ltd マルチプロセッサシステム、それに使用される割込制御装置、および割込制御方法
JPH1078937A (ja) * 1996-07-12 1998-03-24 Nec Corp 複数コンピュータ間の業務分散システム、業務分散方法 および業務分散プログラムを記録した記録媒体
JPH10289120A (ja) * 1997-04-14 1998-10-27 Hitachi Ltd 情報処理装置
JP2004171572A (ja) * 2002-11-21 2004-06-17 Docomo Communications Laboratories Usa Inc サーバ間の負荷分散方法、負荷分散システム、負荷分散サーバおよびプログラム
JP2006024180A (ja) * 2004-06-10 2006-01-26 Hitachi Ltd 計算機システム及びその資源割当て方法

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4691153B2 (ja) * 2008-12-10 2011-06-01 富士通株式会社 マルチコアプロセッサ,制御方法および情報処理装置
JP2010140146A (ja) * 2008-12-10 2010-06-24 Fujitsu Ltd マルチコアプロセッサ,制御方法および情報処理装置
WO2010093003A1 (ja) * 2009-02-13 2010-08-19 日本電気株式会社 演算資源割当装置、演算資源割当方法、及び、演算資源割当プログラム
US8635405B2 (en) 2009-02-13 2014-01-21 Nec Corporation Computational resource assignment device, computational resource assignment method and computational resource assignment program
JP5322038B2 (ja) * 2009-02-13 2013-10-23 日本電気株式会社 演算資源割当装置、演算資源割当方法、及び、演算資源割当プログラム
KR101084876B1 (ko) * 2009-12-10 2011-11-21 주식회사 케이티네트웍스 운영서버에 구성된 cpu의 전체전력소모를 절감하는 방법
CN102110025A (zh) * 2009-12-28 2011-06-29 英特尔公司 避免无效核跳跃和提供硬件辅助的低功率状态选择的机构
JP2011150694A (ja) * 2009-12-28 2011-08-04 Intel Corp 非効率なコアホッピングを回避し、ハードウェア(補助)による低電力状態選択を提供するメカニズム
CN105912303A (zh) * 2009-12-28 2016-08-31 英特尔公司 避免无效核跳跃和提供硬件辅助的低功率状态选择的机构
US9116689B2 (en) 2010-03-04 2015-08-25 Nec Corporation Power consumption reduction method of swapping high load threads with low load threads on a candidate core of a multicore processor
US8555289B2 (en) 2010-03-16 2013-10-08 Samsung Electronics Co., Ltd. System and method for dynamically managing tasks for data parallel processing on multi-core system
JPWO2011114478A1 (ja) * 2010-03-17 2013-06-27 富士通株式会社 生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置
KR20110109608A (ko) * 2010-03-31 2011-10-06 삼성전자주식회사 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
CN102822803A (zh) * 2010-03-31 2012-12-12 富士通株式会社 多核处理器系统、电力控制方法及电力控制程序
KR101641541B1 (ko) 2010-03-31 2016-07-22 삼성전자주식회사 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
WO2011121786A1 (ja) * 2010-03-31 2011-10-06 富士通株式会社 マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム
JP5472449B2 (ja) * 2010-03-31 2014-04-16 富士通株式会社 マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム
US8930436B2 (en) 2010-03-31 2015-01-06 Samsung Electronics Co., Ltd. Apparatus and method of dynamically distributing load in multiple cores
US9037888B2 (en) 2010-03-31 2015-05-19 Fujitsu Limited Multi-core processor system, electrical power control method, and computer product for migrating process from one core to another
CN102934095A (zh) * 2010-06-10 2013-02-13 富士通株式会社 多核处理器系统、控制程序以及控制方法
WO2011155046A1 (ja) * 2010-06-10 2011-12-15 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法
JP5516728B2 (ja) * 2010-06-10 2014-06-11 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法
WO2012066633A1 (ja) * 2010-11-16 2012-05-24 富士通株式会社 通信装置、負荷分散方法、および記録媒体
JP5527425B2 (ja) * 2010-11-16 2014-06-18 富士通株式会社 通信装置、負荷分散方法、および記録媒体
US9021217B2 (en) 2010-11-16 2015-04-28 Fujitsu Limited Communication apparatus, load distribution method, and recording medium
US8625123B2 (en) 2011-05-09 2014-01-07 Fuji Xerox Co., Ltd. Image forming system, management apparatus, and non-transitory computer readable medium
US8949663B2 (en) 2011-12-13 2015-02-03 Toyota Jidosha Kabushiki Kaisha Multi-core processor including a monitored processor core whose process result is to be monitored by a number of processors based on processing load
US9342365B2 (en) 2012-03-15 2016-05-17 Samsung Electronics Co., Ltd. Multi-core system for balancing tasks by simultaneously comparing at least three core loads in parallel
JP2013246458A (ja) * 2012-05-23 2013-12-09 Hitachi Ltd 検証装置及び検証方法
JPWO2014109019A1 (ja) * 2013-01-09 2017-01-19 三菱電機株式会社 プラントエンジニアリングシステム
JP2016522488A (ja) * 2013-05-14 2016-07-28 華為技術有限公司Huawei Technologies Co.,Ltd. タスク割り当て方法、タスク割り当て装置、およびネットワークオンチップ
US9965335B2 (en) 2013-05-14 2018-05-08 Huawei Technologies Co., Ltd. Allocating threads on a non-rectangular area on a NoC based on predicted traffic of a smallest rectangular area
US10671447B2 (en) 2013-05-14 2020-06-02 Huawei Technologies Co., Ltd. Method, apparatus, and network-on-chip for task allocation based on predicted traffic in an extended area
JP2014130644A (ja) * 2014-04-03 2014-07-10 Fujitsu Ltd マルチプロセッサシステム、制御方法、および制御プログラム
JP2016091305A (ja) * 2014-11-05 2016-05-23 コニカミノルタ株式会社 画像形成装置及び並列処理制御プログラム並びに並列処理制御方法
CN116820787A (zh) * 2023-08-31 2023-09-29 湖北芯擎科技有限公司 负载均衡方法、装置、电子设备及计算机可读存储介质
CN116820787B (zh) * 2023-08-31 2023-12-15 湖北芯擎科技有限公司 负载均衡方法、装置、电子设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
JP2008191949A (ja) マルチコアシステムおよびマルチコアシステムの負荷分散方法
US9965324B2 (en) Process grouping for improved cache and memory affinity
Das et al. Application-to-core mapping policies to reduce memory system interference in multi-core systems
Liu et al. Optimizing virtual machine consolidation performance on NUMA server architecture for cloud workloads
KR101651871B1 (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US7487317B1 (en) Cache-aware scheduling for a chip multithreading processor
US20100218194A1 (en) System and method for thread scheduling in processors
JP2007257097A (ja) 仮想計算機システム及びその物理リソース再構成方法並びにプログラム
KR20120066189A (ko) 매니코어 시스템에서 응용 프로그램의 상태를 동적으로 재구성하는 장치 및 방법
Sohal et al. A closer look at intel resource director technology (rdt)
Han et al. Interference management for distributed parallel applications in consolidated clusters
US10725940B2 (en) Reallocate memory pending queue based on stall
KR20100074920A (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
Cheng et al. Performance-monitoring-based traffic-aware virtual machine deployment on numa systems
Tang et al. Spread-n-share: improving application performance and cluster throughput with resource-aware job placement
Chiang et al. Enhancing inter-node process migration for load balancing on linux-based NUMA multicore systems
KR20120083000A (ko) 병렬 제어 모듈을 동적으로 할당하는 방법
Kocoloski et al. Varbench: An experimental framework to measure and characterize performance variability
US20120042322A1 (en) Hybrid Program Balancing
Kim et al. Credit-based runtime placement of virtual machines on a single NUMA system for QoS of data access performance
Mc Evoy et al. Understanding scheduling implications for scientific applications in clouds
US11182183B2 (en) Workload placement using conflict cost
KR101502225B1 (ko) 컴퓨팅 장치에서의 가상머신 간의 성능간섭 감소를 위한 가상머신 할당 방법
Nam et al. Workload-aware resource management for software-defined compute
EP2312442A2 (en) System and method for thread scheduling in processors

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091006

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100323