SlideShare a Scribd company logo
1 of 16
PTI と IBRS パッチの使い方
PTI と IBRS パッチの使い方について
2018 年 3 月 30 日
(株)創夢 内藤 祐一郎
FreeBSD-SA-18:03
● 2018/03/14 にリリースされたセキュリティパッチ
● FreeBSD-SA-18:03.speculative_execution
● いわゆる Meltdown & Spectre への対策
● 正確には以下の対策を含み
– CVE-2017-5754 (Meltdown)
– CVE-2017-5715 (Spectre V2)
● 以下の対策を含まない
– CVE-2017-5753 (Spectre V1)
CVE-2017-5754 (Meltdown) 対策
● Page Table Isolation を導入した。
● ユーザプロセスのメモリ空間にカーネルのメモリをマップ
するのを(ほとんど)やめた。(参考:Wikipediaの記事)
● 元々は Intel がシステムコールの性能向上のために、ユー
ザプロセスにもカーネルのメモリをマップしておくことが
推奨されていた。
– カーネルページが TLB から追い出されるのを防ぐ
– カーネルページはアクセス保護で守られるので問題な
かった
CVE-2017-5715 (Spectre V2) 対策
● Indirect Branch Restricted Speculation を有効にできるよ
うにした。
● 間接分岐命令実行時に投機的実行を制限するように、
Intel がマイクロコードのアップデートをリリースした。
➔ この機能を有効にするためのパッチ。
対策パッチを使うには
1.FreeBSD 11.1R-p8 にアップデートする。
2.PTI (Page Table Isolation) はデフォルトで有効。
3.bios アップデートまたは ports/sysutils/devcpu_data をイ
ンストールする。
4.devcpu_data を入れた場合は、
sysrc microcode_update_enable="YES"
を実行しておく。
5./etc/sysctl.conf に hw.ibrs_disable=0 を書き込む。
6. 以上を行ったらリブートする。
対策が有効かどうかの確認
● PTI (Page Table Isolation)
– sysctl vm.pmap.pti で 1 が表示されること
● IBRS (Indirect Branch Restricted Speculation)
– sysctl hw.ibrs_active で 1 が表示されること
やっぱり無効にしたい場合
● PTI (Page Table Isolation)
– /boot/loader.conf に vm.pmap.pti = 0 を書き込む
● IBRS (Indirect Branch Restricted Speculation)
– /etc/sysctl.conf に hw.ibrs_disable=1 を書き込む
– ( /boot/loader.conf に書き込むでも可)
● 以上を設定後にリブートする。
どのくらい性能に影響するのか?
● 試しに UnixBench を実行してみた。
● UnixBench はアプリケーションの性能に影響を及ぼしそう
な項目ごとにベンチマークを出してくれる。
● PTI, IBRS がどういった処理に影響するのかが分かる。
● 逆に一般的なアプリケーションのワークロードではないた
め、ベンチマークの結果から一般的なアプリケーションの
性能を予測するのは難しい。
使用したハードウェア
目項 値
CPU Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz (Skylake)
コア / スレッド数 4/8
メモリ量 16GB (DDR3L)
HDD 128GB SSD (SATA3 接続 )
File System ZFS (version 5)
結果 (index 値 )
PTI on PTI off
ベンチマ クのー 種類 IBRS on IBRS off IBRS on IBRS off
Dhrystone 2 using
register variables
2562.2 4748.0 2841.7 4771.0
Double-Precision
Whetstone
1194.6 1300.6 1195.3 1306.1
Execl Throughput 706.9 885.6 743.4 945.0
結果 (index 値 )
PTI on PTI off
ベンチマ クのー 種類 IBRS on IBRS off IBRS on IBRS off
File Copy 1024
bufsize 2000
maxblocks
367.8 544.3 382.5 567.6
File Copy 256
bufsize 500
maxblocks
220.3 318.6 231.9 344.1
File Copy 4096
bufsize 8000
maxblocks
932.8 1297.8 971.5 1375.8
結果 (index 値 )
PTI on PTI off
ベンチマ クのー 種類 IBRS on IBRS off IBRS on IBRS off
Pipe Throughput 481.8 1176.1 567.3 1862.7
Pipe-based Context
Switching
374.7 454.5 419.2 570.3
Process Creation 788.5 913.3 857.6 1030.8
結果 (index 値 )
PTI on PTI off
ベンチマ クのー 種類 IBRS on IBRS off IBRS on IBRS off
Shell Scripts (1
concurrent)
1612.5 2291.9 1671.4 2372.7
Shell Scripts (8
concurrent)
5139.7 6538.3 5289.5 6787.8
System Call
Overhead
190.2 559.7 229.5 1157.6
結果 (index 値 )
PTI on PTI off
ベンチマ クのー 種類 IBRS on IBRS off IBRS on IBRS off
System Benchmarks
Index Score
759.2 1144.3 818.2 1335.9
buildworld + buildkernel
● 現実的なアプリケーションの例として
FreeBSD 11.1R-p8 を make buildworld buildkernel した
時間を測定した。
● PTI on & IBRS on の場合は 1901 秒。
● PIT off & IBRS off の場合は 1811 秒。
➔ 5% 遅くなった。
まとめ
● 予想通りシステムコールの性能は劣化する。
● しかし、多くのアプリケーションはシステムコールを頻繁
に呼び出すことを避けるように作られている。
● IBRS は Dhrystone や Whetstone のように CPU の演算性
能に影響を及ぼすため、多くのアプリケーションに影響を
与えると考えられる。
● 対策が必要な環境であれば止むを得ないが、必要のない環
境であればパッチを無効化してしまうのもありだと思う。

More Related Content

What's hot

サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたサーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたVirtualTech Japan Inc.
 
テキサスインスツルメンツ Cc2650、cc2650 rcを使ってみた
テキサスインスツルメンツ Cc2650、cc2650 rcを使ってみたテキサスインスツルメンツ Cc2650、cc2650 rcを使ってみた
テキサスインスツルメンツ Cc2650、cc2650 rcを使ってみたYoshiaki Ito
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方Yuki Takahashi
 
データ加工ストリーミングのすすめ2012 11 20
データ加工ストリーミングのすすめ2012 11 20データ加工ストリーミングのすすめ2012 11 20
データ加工ストリーミングのすすめ2012 11 20Koichiro Mori
 
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 Tokyo
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 TokyoDockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 Tokyo
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 TokyoTakao Setaka
 
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)tokuhy
 
物理マシンをケチる技術
物理マシンをケチる技術物理マシンをケチる技術
物理マシンをケチる技術Satoshi KOBAYASHI
 
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08tokuhy
 
Flameにfirefox os2.1を入れてみた+α
Flameにfirefox os2.1を入れてみた+αFlameにfirefox os2.1を入れてみた+α
Flameにfirefox os2.1を入れてみた+αNaoki Takahashi
 
ACI3.0(1k) Release
ACI3.0(1k) ReleaseACI3.0(1k) Release
ACI3.0(1k) ReleaseTakao Setaka
 
【Interop tokyo 2014】 OpenStack 対応仮想スイッチ、Cisco Nexus 1000V for KVM のご紹介
【Interop tokyo 2014】 OpenStack 対応仮想スイッチ、Cisco Nexus 1000V for KVM のご紹介【Interop tokyo 2014】 OpenStack 対応仮想スイッチ、Cisco Nexus 1000V for KVM のご紹介
【Interop tokyo 2014】 OpenStack 対応仮想スイッチ、Cisco Nexus 1000V for KVM のご紹介シスコシステムズ合同会社
 
CloudAtCostを使ってみた
CloudAtCostを使ってみたCloudAtCostを使ってみた
CloudAtCostを使ってみたnemumu
 
IPython notebookでOpenFOAMを使う!講習会準備資料
IPython notebookでOpenFOAMを使う!講習会準備資料IPython notebookでOpenFOAMを使う!講習会準備資料
IPython notebookでOpenFOAMを使う!講習会準備資料mmer547
 
余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」
余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」
余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」IIJ
 
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...VirtualTech Japan Inc.
 
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)Yuichiro Saito
 

What's hot (19)

サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたサーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
 
テキサスインスツルメンツ Cc2650、cc2650 rcを使ってみた
テキサスインスツルメンツ Cc2650、cc2650 rcを使ってみたテキサスインスツルメンツ Cc2650、cc2650 rcを使ってみた
テキサスインスツルメンツ Cc2650、cc2650 rcを使ってみた
 
5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方5分でわかる!ownCloudアドオンの作り方
5分でわかる!ownCloudアドオンの作り方
 
Oss dev-04
Oss dev-04Oss dev-04
Oss dev-04
 
データ加工ストリーミングのすすめ2012 11 20
データ加工ストリーミングのすすめ2012 11 20データ加工ストリーミングのすすめ2012 11 20
データ加工ストリーミングのすすめ2012 11 20
 
vmware-meetup7
vmware-meetup7vmware-meetup7
vmware-meetup7
 
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 Tokyo
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 TokyoDockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 Tokyo
Dockerのエンタープライズ運用を支える技術 - FlexPod Day 2017 Tokyo
 
ACI Kubernetes Integration
ACI Kubernetes IntegrationACI Kubernetes Integration
ACI Kubernetes Integration
 
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
 
物理マシンをケチる技術
物理マシンをケチる技術物理マシンをケチる技術
物理マシンをケチる技術
 
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
 
Flameにfirefox os2.1を入れてみた+α
Flameにfirefox os2.1を入れてみた+αFlameにfirefox os2.1を入れてみた+α
Flameにfirefox os2.1を入れてみた+α
 
ACI3.0(1k) Release
ACI3.0(1k) ReleaseACI3.0(1k) Release
ACI3.0(1k) Release
 
【Interop tokyo 2014】 OpenStack 対応仮想スイッチ、Cisco Nexus 1000V for KVM のご紹介
【Interop tokyo 2014】 OpenStack 対応仮想スイッチ、Cisco Nexus 1000V for KVM のご紹介【Interop tokyo 2014】 OpenStack 対応仮想スイッチ、Cisco Nexus 1000V for KVM のご紹介
【Interop tokyo 2014】 OpenStack 対応仮想スイッチ、Cisco Nexus 1000V for KVM のご紹介
 
CloudAtCostを使ってみた
CloudAtCostを使ってみたCloudAtCostを使ってみた
CloudAtCostを使ってみた
 
IPython notebookでOpenFOAMを使う!講習会準備資料
IPython notebookでOpenFOAMを使う!講習会準備資料IPython notebookでOpenFOAMを使う!講習会準備資料
IPython notebookでOpenFOAMを使う!講習会準備資料
 
余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」
余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」
余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」
 
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
 
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)
VMwareで手っ取り早く社内システムをHAサーバ化してみました (bpstudy#38)
 

Similar to How to use PTI & IBRS patch

[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~Naoki (Neo) SATO
 
Soft layer users_community_20140523_bitisle_narisako_subset
Soft layer users_community_20140523_bitisle_narisako_subsetSoft layer users_community_20140523_bitisle_narisako_subset
Soft layer users_community_20140523_bitisle_narisako_subsetTakeshi Narisako
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
ITProExpo 2014: 次世代ユニファイド コンピューティングシステム ~ Cisco UCS M シリーズ~
ITProExpo 2014: 次世代ユニファイド コンピューティングシステム ~ Cisco UCS M シリーズ~ITProExpo 2014: 次世代ユニファイド コンピューティングシステム ~ Cisco UCS M シリーズ~
ITProExpo 2014: 次世代ユニファイド コンピューティングシステム ~ Cisco UCS M シリーズ~シスコシステムズ合同会社
 
Cisco Connect Japan 2014: シスコ ユニファイド コミュニケーションのサーバ構築ファースト ステップ
Cisco Connect Japan 2014: シスコ ユニファイド コミュニケーションのサーバ構築ファースト ステップCisco Connect Japan 2014: シスコ ユニファイド コミュニケーションのサーバ構築ファースト ステップ
Cisco Connect Japan 2014: シスコ ユニファイド コミュニケーションのサーバ構築ファースト ステップシスコシステムズ合同会社
 
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS C3160 高密度ストレージ サーバ ~
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS C3160 高密度ストレージ サーバ ~ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS C3160 高密度ストレージ サーバ ~
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS C3160 高密度ストレージ サーバ ~シスコシステムズ合同会社
 
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS Invicta ソリッド ステート システム ~
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS Invicta ソリッド ステート システム ~ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS Invicta ソリッド ステート システム ~
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS Invicta ソリッド ステート システム ~シスコシステムズ合同会社
 
ITpro EXPO 2014: Windows Serverの移行、統合、管理に最適なCisco UCSサーバ
ITpro EXPO 2014: Windows Serverの移行、統合、管理に最適なCisco UCSサーバITpro EXPO 2014: Windows Serverの移行、統合、管理に最適なCisco UCSサーバ
ITpro EXPO 2014: Windows Serverの移行、統合、管理に最適なCisco UCSサーバシスコシステムズ合同会社
 
ITpro EXPO 2014: Cisco UCS Invictaによるアプリケーション高速化とストレージサーバソリューションのご紹介
ITpro EXPO 2014: Cisco UCS Invictaによるアプリケーション高速化とストレージサーバソリューションのご紹介ITpro EXPO 2014: Cisco UCS Invictaによるアプリケーション高速化とストレージサーバソリューションのご紹介
ITpro EXPO 2014: Cisco UCS Invictaによるアプリケーション高速化とストレージサーバソリューションのご紹介シスコシステムズ合同会社
 
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密ShuheiUda
 
【Cisco Data Center Forum 2014】 Cisco UCS の今後の方向性と新製品 Cisco UCS Invicta、および新サー...
【Cisco Data Center Forum 2014】 Cisco UCS の今後の方向性と新製品 Cisco UCS Invicta、および新サー...【Cisco Data Center Forum 2014】 Cisco UCS の今後の方向性と新製品 Cisco UCS Invicta、および新サー...
【Cisco Data Center Forum 2014】 Cisco UCS の今後の方向性と新製品 Cisco UCS Invicta、および新サー...シスコシステムズ合同会社
 
Running Kubernetes on Azure
Running Kubernetes on AzureRunning Kubernetes on Azure
Running Kubernetes on AzureMasaki Yamamoto
 
Cisco の Azure Stack を15分でまるっとご紹介
Cisco の Azure Stack を15分でまるっとご紹介Cisco の Azure Stack を15分でまるっとご紹介
Cisco の Azure Stack を15分でまるっとご紹介Takao Setaka
 
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...IoTビジネス共創ラボ
 
20210514 hccjp azure_stackedgesession
20210514 hccjp azure_stackedgesession20210514 hccjp azure_stackedgesession
20210514 hccjp azure_stackedgesessionOsamu Takazoe
 
Cld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプCld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプTech Summit 2016
 
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)Satoshi Shimazaki
 
Azure Stack 受け入れ準備_20180630
Azure Stack 受け入れ準備_20180630Azure Stack 受け入れ準備_20180630
Azure Stack 受け入れ準備_20180630Hiroshi Matsumoto
 

Similar to How to use PTI & IBRS patch (20)

[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
 
Soft layer users_community_20140523_bitisle_narisako_subset
Soft layer users_community_20140523_bitisle_narisako_subsetSoft layer users_community_20140523_bitisle_narisako_subset
Soft layer users_community_20140523_bitisle_narisako_subset
 
[Japan Tech summit 2017] CLD 019
[Japan Tech summit 2017]  CLD 019[Japan Tech summit 2017]  CLD 019
[Japan Tech summit 2017] CLD 019
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
ITProExpo 2014: 次世代ユニファイド コンピューティングシステム ~ Cisco UCS M シリーズ~
ITProExpo 2014: 次世代ユニファイド コンピューティングシステム ~ Cisco UCS M シリーズ~ITProExpo 2014: 次世代ユニファイド コンピューティングシステム ~ Cisco UCS M シリーズ~
ITProExpo 2014: 次世代ユニファイド コンピューティングシステム ~ Cisco UCS M シリーズ~
 
Cisco Connect Japan 2014: シスコ ユニファイド コミュニケーションのサーバ構築ファースト ステップ
Cisco Connect Japan 2014: シスコ ユニファイド コミュニケーションのサーバ構築ファースト ステップCisco Connect Japan 2014: シスコ ユニファイド コミュニケーションのサーバ構築ファースト ステップ
Cisco Connect Japan 2014: シスコ ユニファイド コミュニケーションのサーバ構築ファースト ステップ
 
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS C3160 高密度ストレージ サーバ ~
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS C3160 高密度ストレージ サーバ ~ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS C3160 高密度ストレージ サーバ ~
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS C3160 高密度ストレージ サーバ ~
 
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS Invicta ソリッド ステート システム ~
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS Invicta ソリッド ステート システム ~ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS Invicta ソリッド ステート システム ~
ITPro Expo 2014: Cisco ストレージ ソリューション ~ Cisco UCS Invicta ソリッド ステート システム ~
 
ITpro EXPO 2014: Windows Serverの移行、統合、管理に最適なCisco UCSサーバ
ITpro EXPO 2014: Windows Serverの移行、統合、管理に最適なCisco UCSサーバITpro EXPO 2014: Windows Serverの移行、統合、管理に最適なCisco UCSサーバ
ITpro EXPO 2014: Windows Serverの移行、統合、管理に最適なCisco UCSサーバ
 
ITpro EXPO 2014: Cisco UCS Invictaによるアプリケーション高速化とストレージサーバソリューションのご紹介
ITpro EXPO 2014: Cisco UCS Invictaによるアプリケーション高速化とストレージサーバソリューションのご紹介ITpro EXPO 2014: Cisco UCS Invictaによるアプリケーション高速化とストレージサーバソリューションのご紹介
ITpro EXPO 2014: Cisco UCS Invictaによるアプリケーション高速化とストレージサーバソリューションのご紹介
 
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
 
【Cisco Data Center Forum 2014】 Cisco UCS の今後の方向性と新製品 Cisco UCS Invicta、および新サー...
【Cisco Data Center Forum 2014】 Cisco UCS の今後の方向性と新製品 Cisco UCS Invicta、および新サー...【Cisco Data Center Forum 2014】 Cisco UCS の今後の方向性と新製品 Cisco UCS Invicta、および新サー...
【Cisco Data Center Forum 2014】 Cisco UCS の今後の方向性と新製品 Cisco UCS Invicta、および新サー...
 
Running Kubernetes on Azure
Running Kubernetes on AzureRunning Kubernetes on Azure
Running Kubernetes on Azure
 
Cisco の Azure Stack を15分でまるっとご紹介
Cisco の Azure Stack を15分でまるっとご紹介Cisco の Azure Stack を15分でまるっとご紹介
Cisco の Azure Stack を15分でまるっとご紹介
 
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
 
20210514 hccjp azure_stackedgesession
20210514 hccjp azure_stackedgesession20210514 hccjp azure_stackedgesession
20210514 hccjp azure_stackedgesession
 
13 i tpro_mini_session_sap
13 i tpro_mini_session_sap13 i tpro_mini_session_sap
13 i tpro_mini_session_sap
 
Cld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプCld002 windows server_2016_で作るシンプ
Cld002 windows server_2016_で作るシンプ
 
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
 
Azure Stack 受け入れ準備_20180630
Azure Stack 受け入れ準備_20180630Azure Stack 受け入れ準備_20180630
Azure Stack 受け入れ準備_20180630
 

More from Yuichiro Naito (20)

Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSDReporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
 
Bmd
BmdBmd
Bmd
 
WireGurad in the FreeBSD kernel
WireGurad in the FreeBSD kernelWireGurad in the FreeBSD kernel
WireGurad in the FreeBSD kernel
 
FreeBSD Capsicum
FreeBSD CapsicumFreeBSD Capsicum
FreeBSD Capsicum
 
Xrdp
XrdpXrdp
Xrdp
 
Bhyve debug-server
Bhyve debug-serverBhyve debug-server
Bhyve debug-server
 
Tramp mode
Tramp modeTramp mode
Tramp mode
 
HandBrake with QSV
HandBrake with QSVHandBrake with QSV
HandBrake with QSV
 
FreeBSD 12.1 RELESE
FreeBSD 12.1 RELESEFreeBSD 12.1 RELESE
FreeBSD 12.1 RELESE
 
Modern fonts
Modern fontsModern fonts
Modern fonts
 
FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!
 
Psql & proctitle
Psql & proctitlePsql & proctitle
Psql & proctitle
 
Iocage
IocageIocage
Iocage
 
FreeBSD 11.2 RELEASE!
FreeBSD 11.2 RELEASE!FreeBSD 11.2 RELEASE!
FreeBSD 11.2 RELEASE!
 
FreeBSD Desktop
FreeBSD DesktopFreeBSD Desktop
FreeBSD Desktop
 
FreeBSD Ports Flavors
FreeBSD Ports Flavors FreeBSD Ports Flavors
FreeBSD Ports Flavors
 
Bsdtw repo
Bsdtw repoBsdtw repo
Bsdtw repo
 
How to use blacklistd
How to use blacklistdHow to use blacklistd
How to use blacklistd
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with Poudriere
 
Ruby build
Ruby buildRuby build
Ruby build
 

How to use PTI & IBRS patch

  • 1. PTI と IBRS パッチの使い方 PTI と IBRS パッチの使い方について 2018 年 3 月 30 日 (株)創夢 内藤 祐一郎
  • 2. FreeBSD-SA-18:03 ● 2018/03/14 にリリースされたセキュリティパッチ ● FreeBSD-SA-18:03.speculative_execution ● いわゆる Meltdown & Spectre への対策 ● 正確には以下の対策を含み – CVE-2017-5754 (Meltdown) – CVE-2017-5715 (Spectre V2) ● 以下の対策を含まない – CVE-2017-5753 (Spectre V1)
  • 3. CVE-2017-5754 (Meltdown) 対策 ● Page Table Isolation を導入した。 ● ユーザプロセスのメモリ空間にカーネルのメモリをマップ するのを(ほとんど)やめた。(参考:Wikipediaの記事) ● 元々は Intel がシステムコールの性能向上のために、ユー ザプロセスにもカーネルのメモリをマップしておくことが 推奨されていた。 – カーネルページが TLB から追い出されるのを防ぐ – カーネルページはアクセス保護で守られるので問題な かった
  • 4. CVE-2017-5715 (Spectre V2) 対策 ● Indirect Branch Restricted Speculation を有効にできるよ うにした。 ● 間接分岐命令実行時に投機的実行を制限するように、 Intel がマイクロコードのアップデートをリリースした。 ➔ この機能を有効にするためのパッチ。
  • 5. 対策パッチを使うには 1.FreeBSD 11.1R-p8 にアップデートする。 2.PTI (Page Table Isolation) はデフォルトで有効。 3.bios アップデートまたは ports/sysutils/devcpu_data をイ ンストールする。 4.devcpu_data を入れた場合は、 sysrc microcode_update_enable="YES" を実行しておく。 5./etc/sysctl.conf に hw.ibrs_disable=0 を書き込む。 6. 以上を行ったらリブートする。
  • 6. 対策が有効かどうかの確認 ● PTI (Page Table Isolation) – sysctl vm.pmap.pti で 1 が表示されること ● IBRS (Indirect Branch Restricted Speculation) – sysctl hw.ibrs_active で 1 が表示されること
  • 7. やっぱり無効にしたい場合 ● PTI (Page Table Isolation) – /boot/loader.conf に vm.pmap.pti = 0 を書き込む ● IBRS (Indirect Branch Restricted Speculation) – /etc/sysctl.conf に hw.ibrs_disable=1 を書き込む – ( /boot/loader.conf に書き込むでも可) ● 以上を設定後にリブートする。
  • 8. どのくらい性能に影響するのか? ● 試しに UnixBench を実行してみた。 ● UnixBench はアプリケーションの性能に影響を及ぼしそう な項目ごとにベンチマークを出してくれる。 ● PTI, IBRS がどういった処理に影響するのかが分かる。 ● 逆に一般的なアプリケーションのワークロードではないた め、ベンチマークの結果から一般的なアプリケーションの 性能を予測するのは難しい。
  • 9. 使用したハードウェア 目項 値 CPU Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz (Skylake) コア / スレッド数 4/8 メモリ量 16GB (DDR3L) HDD 128GB SSD (SATA3 接続 ) File System ZFS (version 5)
  • 10. 結果 (index 値 ) PTI on PTI off ベンチマ クのー 種類 IBRS on IBRS off IBRS on IBRS off Dhrystone 2 using register variables 2562.2 4748.0 2841.7 4771.0 Double-Precision Whetstone 1194.6 1300.6 1195.3 1306.1 Execl Throughput 706.9 885.6 743.4 945.0
  • 11. 結果 (index 値 ) PTI on PTI off ベンチマ クのー 種類 IBRS on IBRS off IBRS on IBRS off File Copy 1024 bufsize 2000 maxblocks 367.8 544.3 382.5 567.6 File Copy 256 bufsize 500 maxblocks 220.3 318.6 231.9 344.1 File Copy 4096 bufsize 8000 maxblocks 932.8 1297.8 971.5 1375.8
  • 12. 結果 (index 値 ) PTI on PTI off ベンチマ クのー 種類 IBRS on IBRS off IBRS on IBRS off Pipe Throughput 481.8 1176.1 567.3 1862.7 Pipe-based Context Switching 374.7 454.5 419.2 570.3 Process Creation 788.5 913.3 857.6 1030.8
  • 13. 結果 (index 値 ) PTI on PTI off ベンチマ クのー 種類 IBRS on IBRS off IBRS on IBRS off Shell Scripts (1 concurrent) 1612.5 2291.9 1671.4 2372.7 Shell Scripts (8 concurrent) 5139.7 6538.3 5289.5 6787.8 System Call Overhead 190.2 559.7 229.5 1157.6
  • 14. 結果 (index 値 ) PTI on PTI off ベンチマ クのー 種類 IBRS on IBRS off IBRS on IBRS off System Benchmarks Index Score 759.2 1144.3 818.2 1335.9
  • 15. buildworld + buildkernel ● 現実的なアプリケーションの例として FreeBSD 11.1R-p8 を make buildworld buildkernel した 時間を測定した。 ● PTI on & IBRS on の場合は 1901 秒。 ● PIT off & IBRS off の場合は 1811 秒。 ➔ 5% 遅くなった。
  • 16. まとめ ● 予想通りシステムコールの性能は劣化する。 ● しかし、多くのアプリケーションはシステムコールを頻繁 に呼び出すことを避けるように作られている。 ● IBRS は Dhrystone や Whetstone のように CPU の演算性 能に影響を及ぼすため、多くのアプリケーションに影響を 与えると考えられる。 ● 対策が必要な環境であれば止むを得ないが、必要のない環 境であればパッチを無効化してしまうのもありだと思う。