Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
234 lines (160 sloc) 10 KB

https://www.gophercon.com/

Talk Details

Title

フィードバック制御を用いたゴルーチン起動数の最適化
Optimization for number of goroutines using feedback control

Elevator Pitch

You have 300 characters to sell your talk. This is known as the "elevator pitch". Make it as exciting and enticing as possible.

並行数の設計は,並行処理の速度と安定性を両立させるために重要です.
プラットフォームや負荷の状態に左右されずに優れたパフォーマンスを得るためには,並行数を動的かつ迅速に制御することが望ましいです.
そこで,フィードバック制御によってこれを解決するアーキテクチャを提案します.
The design for number of concurrency is important to achieve both speed and stability.
Giving a good performance without depending on platform and load conditions, it's desirable for the number to be dynamic and rapidly controlled.
So, I propose an architecture to solve this by feedback control.

[Total character count: 296 (without new lines)]

Talk Format

What format is this talk best suited for?

  • Keynote (25 minutes)
  • Tutorial (45 minutes)

Audience Level

Who is the best target audience for this talk?

  • All
  • Beginner
  • Intermediate
  • Advanced

Description

This field supports Markdown. The description will be seen by reviewers during the CFP process and may eventually be seen by the attendees of the event.

You should make the description of your talk as compelling and exciting as possible. Remember, you're selling both the organizers of the events to select your talk, as well as trying to convince attendees your talk is the one they should see.

Go言語では,賢いランタイムと軽量なGoroutineによって効率的に並行処理が実行されます.
しかしながら,スピードと安定性の両方を達成するために,開発者は経験と地道なチューニングを通してアプリケーションごとに最適なGoroutine起動数を決めなければなりません.
また,ほとんどの場合、プログラムがチューニングされる環境と実行される環境は異なります.
そのため,負荷状況やプラットフォームに依存せず高い性能を得るために,並行数は実行時に動的かつ高速に制御されることが望ましいです.
そこで本セッションでは,フィードバック制御と動的セマフォを用いてGoroutineの起動数を動的に制御する手法を提案します.

このセッションはGoroutineを用いた並行処理のパフォーマンス改善に興味がある開発者を対象としています.
このセッションの流れは以下の通りです.

1. 自己紹介 (1min)
2. 並行数の設計に関する課題 (10min)
3. フィードバック制御を用いたGoroutine起動数の動的な調整 (20min)
4. 評価 (10min)
5. 質疑応答 (4min)

各セクションの詳細は以下の通りです.

#### 1. 自己紹介 (1min)

自己紹介です.

#### 2. 並行数の設計に関する課題 (10min)

このセクションでは以下の観点から並行数の設計に関する課題を整理します.

- CPUバウンドとI/Oバウンド
- 実行環境や負荷状況の差異
- 複雑な指標

また、I/Oが頻繁に発生するサンプルアプリケーションを使用して,最適な同時実行数が環境によって異なることを確認します.

#### 3. フィードバック制御を用いたGoroutine起動数の動的な調整 (20min)

このセクションでは,プラットフォームやランタイム,マシンの負荷に依存せずに,動的かつ継続的に並行数を調整するアーキテクチャを提案します.
はじめに,フィードバック制御の基本について説明し、次にCPU使用率の均衡をメトリクスとして使用する制御器,そして動的セマフォについて説明します。
最後に,これらを実現するライブラリとして開発している[monochromegane/kaburaya](https://github.com/monochromegane/kaburaya)を紹介します.

#### 4. 評価 (10min)

このセクションでは提案したアーキテクチャを評価します.
まず,最適な並行数の指標を定義します.
それから先ほどのサンプルアプリケーションを用いて,実装したライブラリによって並行数が動的かつ継続的に制御されていることを確認します.

#### 5. 質疑応答 (4min)
Go efficiently processes concurrent programs by smart runtime and light weight goroutines.
And yet, achieving both speed and stability, developers have to decide optimum number of goroutines through their experiences and continuous tuning.
And, in most case, the environment on which the program is tuned and the environment on which it will be executed are different.
Thus, giving a good performance without depending on platform and load conditions, it's desirable for the number to be dynamic and rapidly controlled.
In this session, I propose an aproach which dynamic controls the number of goroutines using feedback control and dynamic semaphore.

This session targets developers who has an interest in performance tuning of concurrent application using goroutines.
The flow of this session as follows.

1. Self introduction (1min)
2. The problems about design for number of concurrency (10min)
3. Dynamic control the number of goroutines using feedback control (20min)
4. Evalution (10min)
5. Questions and Answers (4min)

The details of each section are as follows.

#### 1. Self introduction (1min)
Only self introduction.

#### 2. The problems about design for number of concurrency (10min)
In this section, I will organize the problems about design for number of concurrency from following viewpoints.

- CPU bound and I/O bound
- Different environment and load conditions
- Complicated metrics

And, we confirm that the optimum number of concurrency depend on environment using an sample application with frequent I/O.

#### 3. Dynamic control the number of goroutines using feedback control (20min)
In this section, I will propose an architecture which dynamic and continuous controls the number of goroutines without depending on platform, runtime and current load.
First, I explain the basic of feedback control, then the controller which uses CPU usage balance as an metrics, and dynamic semaphore.
And, I introduce a library "[monochromegane/kaburaya](https://github.com/monochromegane/kaburaya)" which I am developing to solve them.

#### 4. Evalution (10min)
In this section, I will evaluate the proposed architecture.
First, I define metrics for optimum number of concurrency.
Then, we confirm that the number is controlled dynamic and continuous by the implemented library using the above sample application.

#### 5. Questions and Answers (4min)
This is a discussion period.

Notes

This field supports Markdown. Notes will only be seen by reviewers during the CFP process. This is where you should explain things such as technical requirements, why you're the best person to speak on this subject, etc...

私は["The Platinum Searcher"](https://github.com/monochromegane/the_platinum_searcher)と名付けたGo言語で書かれた高速なgrepツールを開発しています.
これは様々な環境で実行されるため,環境に依存しない並行数の設計を検討する必要があります.
私は[Go言語のランタイムに対する理解を深め](https://speakerdeck.com/monochromegane/road-to-your-goroutines),今回提案するアーキテクチャを検討しました.
今回のカンファレンスでは,これらのアプローチについて議論したいと考えています.
I am developing a fast grep tool written in Go named ["The Platinum Searcher"](https://github.com/monochromegane/the_platinum_searcher).
Because the tool runs on various clients, it is required to decide optimum number of concurrency without depending on the environments.
So, I have deepened my understanding of [the runtime of Go](https://speakerdeck.com/monochromegane/road-to-your-goroutines) and have proposed this architecture.
At this conference I would like to discuss with you about these approaches.

Tags

Tag your talk to make it easier for event organizers to be able to find. Examples are "ruby, javascript, rails".

goroutine, concurrency, performance

go golang These tags are being used by this event to organize submissions. Please tag your submissions with the appropriate tags.

Profile Details

This CFP is anonymized. The organizers will not see your personal information until your talk has been selected.

Name

Yusuke Miyake

URL

Have a blog or some other website you'd like to have listed with this profile? If so, this is the field for you.

https://github.com/monochromegane

Bio

This field supports Markdown. Your bio sells you. Who are you? Why should people listen to you? Who's your favorite member of One Direction? This is your chance to put it all out there.

Researcher of internet and operation technology, and Web developer.
I am Gopher in Japan.
I love writing [OSS using Go](https://github.com/monochromegane?utf8=%E2%9C%93&tab=repositories&q=&type=&language=go).

Organization or Affiliation

The name of your company, organization, or affiliation if you have any.

Pepabo R&D Institute, GMO Pepabo, Inc.

Twitter Handle

Twitter Handle should just be your handle without the "@".

monochromegane

Shirt Size

What size swag fits you best?

  • Men's M
  • Men's L
  • Men's XL
  • Men's 2XL
  • Men's 3XL
  • Men's 4XL
  • Women's S
  • Women's M
  • Women's L
  • Women's XL
  • Women's 2XL
  • Women's 3XL
  • Women's 4XL

Additional Information

You can edit your proposal at any time until the CFP closes. Once the CFP closes all proposals are final. If there is feedback or requests for clarification from the reviewers it will be communicated to you before the CFP closes.

You can’t perform that action at this time.