Submit Search
ASP.NET Core の パフォーマンスを支える I/O Pipeline と Channel
Download as PPTX, PDF
0 likes
563 views
J
Joni
ASP.NET Core の パフォーマンスを支える System.IO.Pipelines と System.Threading.Channels
Software
Related topics:
ASP.NET Core
Read more
1 of 47
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Most read
35
Most read
36
37
38
39
Most read
40
41
42
43
44
45
46
47
More Related Content
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
PDF
Entity Framework(Core)についての概要を学ぼう
TomomitsuKusaba
PPTX
コンテナネットワーキング(CNI)最前線
Motonori Shindo
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
PPTX
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
NTT DATA Technology & Innovation
PPTX
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
PDF
MapReduce/YARNの仕組みを知る
日本ヒューレット・パッカード株式会社
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
Entity Framework(Core)についての概要を学ぼう
TomomitsuKusaba
コンテナネットワーキング(CNI)最前線
Motonori Shindo
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
NTT DATA Technology & Innovation
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
MapReduce/YARNの仕組みを知る
日本ヒューレット・パッカード株式会社
What's hot
(20)
PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
PPTX
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
PDF
知っているようで知らないPAMのお話
Serverworks Co.,Ltd.
PPTX
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
NTT DATA Technology & Innovation
PDF
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!デベロッパーネットワーク
PDF
Topology Managerについて / Kubernetes Meetup Tokyo 50
Preferred Networks
PPTX
Openconfigを用いたネットワーク機器操作
Hirofumi Ichihara
PPTX
本当は恐ろしい分散システムの話
Kumazaki Hiroki
PPTX
C# 8.0 非同期ストリーム
信之 岩永
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
PPTX
Azure Functions with terraform
Tomokazu Tochi
PPTX
NGINXをBFF (Backend for Frontend)として利用した話
Hitachi, Ltd. OSS Solution Center.
PDF
NEDIA_SNIA_CXL_講演資料.pdf
Yasunori Goto
PDF
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
PDF
NetflixにおけるPresto/Spark活用事例
Amazon Web Services Japan
PPTX
フロー技術によるネットワーク管理
Motonori Shindo
PPTX
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
PDF
AWSのログ管理ベストプラクティス
Akihiro Kuwano
PPTX
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
NTT DATA Technology & Innovation
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
知っているようで知らないPAMのお話
Serverworks Co.,Ltd.
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
NTT DATA Technology & Innovation
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!デベロッパーネットワーク
Topology Managerについて / Kubernetes Meetup Tokyo 50
Preferred Networks
Openconfigを用いたネットワーク機器操作
Hirofumi Ichihara
本当は恐ろしい分散システムの話
Kumazaki Hiroki
C# 8.0 非同期ストリーム
信之 岩永
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
Azure Functions with terraform
Tomokazu Tochi
NGINXをBFF (Backend for Frontend)として利用した話
Hitachi, Ltd. OSS Solution Center.
NEDIA_SNIA_CXL_講演資料.pdf
Yasunori Goto
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
NetflixにおけるPresto/Spark活用事例
Amazon Web Services Japan
フロー技術によるネットワーク管理
Motonori Shindo
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
AWSのログ管理ベストプラクティス
Akihiro Kuwano
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
NTT DATA Technology & Innovation
Ad
Similar to ASP.NET Core の パフォーマンスを支える I/O Pipeline と Channel
(20)
PPTX
Windows Azure PHP Tips
Microsoft Openness Japan
PDF
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
Akira Inoue
PDF
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
PDF
コンテナーによるIT基盤変革 - IT infrastructure transformation -
日本ヒューレット・パッカード株式会社
PDF
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
Akira Inoue
PDF
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
日本マイクロソフト株式会社
PDF
de:code 2019 Cloud トラック 総まとめ!
Minoru Naito
PDF
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
Takashi Okawa
PPTX
Speed Up Web 2012
彰 村地
PPT
Intalio会社概要とIntalio Bppの特長 010109
Tomoaki Sawada
PDF
Tekton 入門
Mamoru Shimizu
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
PDF
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
de:code 2017
PDF
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
PDF
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
PPTX
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
fukuoka.ex
PDF
HTML5など社内勉強会 Vol.11 - High Performance Web and iOS 6 WebKit
George Harada
PPT
EPUB3以降とReadium
Makoto Murata
PDF
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
Akira Inoue
Windows Azure PHP Tips
Microsoft Openness Japan
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
Akira Inoue
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
コンテナーによるIT基盤変革 - IT infrastructure transformation -
日本ヒューレット・パッカード株式会社
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
Akira Inoue
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
日本マイクロソフト株式会社
de:code 2019 Cloud トラック 総まとめ!
Minoru Naito
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
Takashi Okawa
Speed Up Web 2012
彰 村地
Intalio会社概要とIntalio Bppの特長 010109
Tomoaki Sawada
Tekton 入門
Mamoru Shimizu
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
de:code 2017
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
fukuoka.ex
HTML5など社内勉強会 Vol.11 - High Performance Web and iOS 6 WebKit
George Harada
EPUB3以降とReadium
Makoto Murata
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
Akira Inoue
Ad
More from Joni
(13)
PPTX
.NET Framework で C# 8って使える? YESとNO!
Joni
PPTX
.NET Core 3.0 で Blazor を使用したフルスタック C# Web アプリの構築
Joni
PPTX
Fiddler 使ってますか?
Joni
PPTX
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
Joni
PPTX
ASP.NET パフォーマンス改善
Joni
PPT
Introduction to .NET
Joni
PPT
Tips and Tricks of Developing .NET Application
Joni
PPT
Introduction to Html
Joni
PPT
C#
Joni
PPT
Asp #1
Joni
PPT
Introduction to ASP.NET
Joni
PPT
Asp #2
Joni
PPTX
ASP.NET MVCはNullReferenceExceptionを潰している件
Joni
.NET Framework で C# 8って使える? YESとNO!
Joni
.NET Core 3.0 で Blazor を使用したフルスタック C# Web アプリの構築
Joni
Fiddler 使ってますか?
Joni
Fukuoka.NET Conf 2018: 挑み続ける!Dockerコンテナによる ASP.NET Core アプリケーション開発事例
Joni
ASP.NET パフォーマンス改善
Joni
Introduction to .NET
Joni
Tips and Tricks of Developing .NET Application
Joni
Introduction to Html
Joni
C#
Joni
Asp #1
Joni
Introduction to ASP.NET
Joni
Asp #2
Joni
ASP.NET MVCはNullReferenceExceptionを潰している件
Joni
ASP.NET Core の パフォーマンスを支える I/O Pipeline と Channel
1.
ASP.NET Core の パフォーマンスを 支える I/O
Pipeline と Channel .NET Conf 2022 Recap Event 福岡 2022/11/25 株式会社オープンストリーム ジョニー @joni2nja
2.
about:config ジョニー @joni2nja https://joni.carrd.co/ https://medium.com/@joni2nja https://github.com/jo-ninja
3.
今日お話しすること System.IO.Pipelines と System.Threading.Channels の紹介
4.
.NET 7 でのパフォーマンス改善 https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_7/ PDF版:https://aka.ms/net7-perf-pdf
5.
ASP.NET Core の
パフォーマンス
6.
Do more with
less より少ないリソース(資源や時間)で より多くのことを実現する
7.
System.IO.Pipelines 高性能な I/O をより簡単に行えるように 設計されたライブラリ https://learn.microsoft.com/en-us/dotnet/standard/io/pipelines
8.
どのような課題を解決するのか?(1/5) データプロトコルのパース処理で、ストリームから byte 列を 読み込む典型的な例:
9.
どのような課題を解決するのか?(2/5) ほとんどのストリーム系 API は、データコピー 前提で設計されている。 例: https://github.com/dotnet/runtime/blob/5c420f1aa78455c803f6d6b17eb4543ad728461c/src/libraries/System.Private.CoreLib/src/System/IO/MemoryStream.cs#L337-L344
10.
どのような課題を解決するのか?(3/5) ⚠️ 1回の呼び出しで対象のデータ(例:EOL)を受信/読み込み できない場合がある 💡EOLが見つかるまでバッファの確保・リサイズ等をする ⚠️ 1回の呼び出しで複数EOLが返ってくる場合もある 💡それぞれパース・処理する
11.
どのような課題を解決するのか?(4/5) ⚠️ バッファ確保・リサイズ問題 ⚠️頻繁にデータのコピーが発生 ⚠️アロケート(割り当て)したメモリはコンパクト化されない ⚠️GCへの負担が増加 💡バッファの繰り返しアロケートを避ける ために ArrayPool<byte>
を使用し、処理終了後は バッファをプールに返却する 💡一定サイズのバッファのリストを使用する
12.
改善された(不完全)例:👉 サンプルはこちら: https://learn.microsoft.com/en-us/dotnet/standard/io/pipelines
13.
System.IO.Pipelines System.IO.Pipelinesの目標は、これらの課題を解決したい、かつ より簡単に書けるようにしたい ✅ストリーミングデータを高速にパースする。 ✅コードの複雑さを軽減する
14.
System.IO.Pipelines の場合 ✅明示的にバッファをアロケート する必要がない ✅バッファの管理はすべて PipeReaderとPipeWriterに 任せる ✅ユーザコードは複雑な バッファ管理ではなく、 ビジネスロジックに集中する ことができる
15.
Pipe • Pipe クラスを使用し、
PipeWriter と PipeReader のペアを 作成することができる • PipeWriter に書き込まれたすべてのデータは、PipeReader で利用できる
16.
PipeWriterで 書き込み
17.
Pipe覗き見 • 実際に「consume」することなく、Pipe内のデータを覗き見る ことができる
18.
Pipe
33.
1GBのデータを読み込もうとしても~ Segment が増えるだけで、LOHに配置されないのが有り難い😉
34.
つまり https://www.youtube.com/watch?v=1koWtKkKb_o - High
performance IO with System.IO.Pipelines https://www.youtube.com/watch?v=tLnQsNTfl9Q - .NET Design Review: System.IO.Pipelines
35.
System.Threading.Channels プロデューサーとコンシューマーの間で非同期に データを転送するためのデータ構造。 Channel を使えば、独自に同期やロックを実装 する必要がなくなる。 https://learn.microsoft.com/en-us/dotnet/core/extensions/channels
36.
プロデューサー/コンシューマー?🤔 System.IO.Pipelines と何が違う?
37.
Pipelines 🆚 Channels System.IO.Pipelines •
API も実装も、 byte 例を処 理するのに最適化されている • 1プロデューサー:1コン シューマー System.Threading.Channels • API も実装も、任意のデータ をスレッド間で転送するため に最適化されている • 1..nプロデューサー:1..nコン シューマー
39.
BlockingCollectionと何が違う? BlockingCollection involves blocking;
there are no task-based APIs to perform work asynchronously. Channels is all about asynchrony; there are no synchronously-blocking APIs — Stephen Toub.
40.
Channel ファクトリ作成 Channel.CreateBounded<T>() 最大容量を指定した Channel を作成する Channel.CreateUnbounded<T>() 任意の数のプロデューサー/コ ンシューマーが同時に使用でき るチャネルを作成する
41.
任意のデータ
43.
例:データ変換→アップロード
44.
System.IO.Pipelines + System.Threading.Channels = ❓
45.
例:データ変換→アップロード
46.
System.IO.Pipelines + System.Threading.Channels = 🚀
47.
ご清聴ありがとうございました
Download