注目すべき変更点
次の各項では、UEK R3と比較した、Unbreakable Enterprise Kernelリリース4 (UEK R4)の主要な新機能について説明します。
コンテナ
次の重要なコンテナ機能が、UEK R4に実装されています:
-
ローカル・デバイスのcgroup変更は、デバイスcgroup階層に伝播されるようになりました。
詳細は、git commit bd2953ebbb533aeda9b86c82a53d5197a9a38f1bを参照してください。
-
__DEVEL__sane_behavior
が導入され、cgroupコントローラをマウントできるようになりました。詳細は、git commit 873fe09ea5df6ccf6bb34811d8c9992aacb67598を参照してください。
-
memory.numa_stat
に、親memcg
に加え、子メモリーcgroups (memcgs
)の階層統計が含まれるようになりました。詳細は、git commit 071aee138410210e3764f3ae8d37ef46dc6d3b42を参照してください。
-
オプションの統一制御グループ階層が、導入されました。
詳細については、https://lwn.net/Articles/601840/を参照してください。
-
swappiness
およびoom_control
の階層制限が、memcgs
から取り除かれました。詳細は、git commit 3dae7fec5e884a4e72e5416db0894de66f586201を参照してください。
カーネルの基本機能
次の重要なカーネルの基本機能が、UEK R4に実装されています:
-
EPOLL_CTL_ADD
およびEPOLL_CTL_DEL
操作で使用されるグローバルepmutex
ロックの競合が取り除かれたため、SPECjbbのパフォーマンスが、CPUが10以上あるシステムで向上しました。 たとえば、一般的な16ソケットの実行で、パフォーマンスが35k jOPSから125k jOPSへ増加します。 ベンチマークも、10ソケットから40ソケットを超える適切なスケーリングを表示します。 -
NUMAスケジューラで使用される
sysctl_numa_balancing_settle_count
パラメータが削除されました。 -
次のトレースポイントを使用して、NUMAスケジューラ・アクティビティを監視します:
-
trace_sched_move_numa
-
タスクがノードに移動した場合に、トリガーされます。
-
trace_sched_stick_numa
-
NUMA移行が失敗した場合に、トリガーされます。
-
trace_sched_swap_numa
-
タスクが他のタスクにスワップした場合に、トリガーされます。
-
-
新しい
SCHED_STACK_END_CHECK
カーネル・デバッグ・オプションを使用して、NUMAシステム上のschedule()
の呼出しでスタックの超過をチェックできます。 スタック終了位置が上書きされると、壊れた範囲のコンテンツが信頼されないため、システム・パニックが発生します。 -
スプリアス・アクティブNUMA移行を防ぐことで、Sysbenchパフォーマンスが向上しました。
-
CPUクロック周波数をスケーリングして、パフォーマンスを管理します。
/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
で表示される可能性のあるガバナー設定は次のとおりです:-
ondemand
-
CPUクロック周波数を、現在の使用量での要求に応じて、最小および最大の設定可能な周波数の間で設定します。 次の
sysfs
パラメータが、調整可能です:-
ignore_nice_load
-
CPU使用量に対して、
nice
値で(0)をカウントする、または(1)をカウントせずに処理するかどうか。 デフォルト値は0です。 -
powersave_bias
-
1000の小数部ごとにターゲットCPU周波数を、どれだけ減少させるか。 0に設定すると、この機能は無効になります。
-
sampling_down_factor
-
CPUが最大のクロック周波数で稼働している場合、カーネルが
sampling_rate
に適用する乗数。 デフォルト値は1です。 -
sampling_rate_min
-
最小サンプル率。
-
sampling_rate
-
カーネルでクロック周波数の変更が必要かどうかをのアセスメント間のマイクロ秒単位の間隔。
-
up_threshold
-
カーネルがクロック周波数を増加する率の平均的なCPU使用量のしきい値。
tuned
が構成されていない場合、ondemand
がデフォルトのガバナー設定です。この設定は、
pstate
パワー・スケーリング・ドライバで相互作用できる最近のマイクロアーキテクチャCPU (たとえば、Haswell、Broadwellおよびそれ以降)のpowersave
と同等です。 旧式アーキテクチャCPU (たとえば、Ivy Bridge、Sandy Bridgeおよびそれ以前)では、ondemand
は、CPUレイテンシを最小化するために、コアでパワーを高い状態に維持する必要があるため、performance
と同等です。 -
-
performance
-
CPUクロック周波数を、設定可能な最大周波数に設定します。
ノート:
performance
は、tuned
throughput-performance
プロファイルのデフォルトのガバナー設定です。performance
プロファイルは、リアルタイム・アプリケーションの一部で適切ですが、すべてのワークロードに適切ではない場合があります。 CPUを最大周波数で稼働すると、発熱エンベロープを超過する可能性があるターボ・モードが有効になるのを防げます。 -
powersave
-
CPUクロック周波数を、設定可能な最小周波数に設定します。
-
userspace
-
有効な
root
ユーザーとしてユーザー空間プログラムの実行を許可し、sysfs
下のCPUデバイス・ディレクトリ内のscaling_setspeed
という名前のファイルを作成および使用して、CPUクロック周波数を制御します。
Oracleでは、tuned-admを使用して、ハードウェアおよびソフトウェア構成に基づくシステムの
tuned
パフォーマンス・プロファイルを選択することをお薦めします。次に例を示します:-
システムにXeonプロセッサまたは複数のディスクがある場合、クラウド・サーバーに
latency-performance
、データベース・サーバーにthroughput-performance
、または仮想ホスト・サーバーにvirtual-host
などのプロファイルを選択します。ノート:
これらのプロファイルは、CPUガバナー設定を
performance
に設定しますが、すべてのワークロードに適切ではない場合があります。 -
仮想マシン・ゲストでは、
virtual-guest
プロファイルを選択します。 -
ラップトップでは、
laptop-ac-powersave
またはlaptop-battery-powersave
などの適切なラップトップ・プロファイルを選択します。 -
デスクトップ・マシンでは、
desktop
またはbalanced
プロファイルのいずれかを選択します。
tuned-adm listコマンドを使用して、使用可能なプロファイルを表示できます。
tuned
が構成されていない場合、デフォルトCPUガバナー設定はondemand
で、要求ヒステリシスのために、バーストが発生してCPU集中的なワークロードの実行が遅くなる場合があります。必要に応じ、
/etc/tune-profiles
ディレクトリ階層で提供されるプロファイルに基づき、独自のパフォーマンス・プロファイルを作成することができます。異なるプロファイル下でのシステム・パフォーマンスを比較する場合、使用するサーバーの一般的なワークロードをシミュレートするベンチマークを使用します。
詳細は、
tuned
パッケージで入手可能なtuned(8)
およびtuned-adm(1)
マニュアル・ページを参照してください。 -
暗号化
次の重要な暗号化機能が、UEK R4に実装されています:
-
PCLMULQDQ
命令を使用した高速のCRC T10 DIF計算。 -
LZ4暗号化API。
-
sha256_ssse3
、SHA-224
、sha512_ssse3
およびSHA-384
がサポートされています。 -
AMD暗号化コプロセッサがサポートされ、AES、SHAおよびその他の暗号化操作の高速化またはオフロードで使用できます。
ファイル・システム
次の項では、UEK R4のファイル・システムに実装された最も重要な機能について説明します:
btrfs
-
skinnyメタデータ機能は、UEK R3と互換性がないため、デフォルトで有効化されません。 (バグID 22123918)
-
btrfs filesystem balanceコマンドでは、特定の状況でRAIDレベルを変更できるという警告はなく、操作を取り消す選択肢はありません。 (バグID 16472824)
-
duなどのコマンドでは、遅延割当て中のバイト数が変化している場合に、btrfsファイル・システム内のファイル・サイズの一貫性のない結果を表示できます。 (バグID 13096268)
-
btrfsがコピーオンライトであるということは、ファイル・システム上のすべての操作で、最初にディスク・スペースが必要になるということです。 スペースが残っていないディスクでは、すべての操作を実行できず、ファイルの削除もできない場合があります。 回避策は、操作を再試行する前にsyncを実行することです。 これが役に立たない場合は、-o nodatacowオプションを指定してファイルシステムを再マウントし、一部のファイルを削除して領域を解放します。 https://btrfs.wiki.kernel.org/index.php/ENOSPCを参照してください。
-
空でないファイル・システムでbtrfs quota enableコマンドを実行した場合、既存のファイルは領域使用量にカウントされません。 これらのファイルを削除すると、使用レポートにマイナスの数字が表示される場合があり、ファイル・システムにアクセスできなくなります。 回避策として、ファイル・システムの作成直後にquotaを有効にします。 ファイル・システムにすでにデータを書き込んだ場合は、もうquotaを有効にできません。 (バグID 16569350)
-
btrfs quota rescanコマンドは、現在実装されていません。 このコマンドは再スキャンを実行せず、メッセージも表示せずに戻ります。 (バグID 16569350)
-
ファイルの途中でデータを上書きすると、上書きされた領域は、btrfs qgroup showによって表示される領域使用量の2倍にカウントされます。 (バグID 16609467)
-
ファイル・システムでbtrfsck --init-csum-treeを実行し、同じファイル・システムで単純なbtrfsckを実行すると、以前は存在していなかったBackref不一致エラーが表示されます。 (バグID 16972799)
-
Btrfsでは、btrfsファイル・システムを作成する対象デバイスをトラッキングします。 その後、これらのデバイスをbtrfs以外のファイル・システムで再利用すると、デバイス・スキャンの実行時またはRAID-1ファイル・システムの作成時に次のようなエラー・メッセージが表示される場合があります。
ERROR: device scan failed '/dev/cciss/c0d0p1' - Invalid argument
これらのエラーは無視しても問題ありません。 (バグID 17087097)
-
-sオプションを使用して、ページ・サイズとは異なるセクター・サイズをmkfs.btrfsに指定した場合、作成されたファイルシステムはマウントできません。 デフォルトでは、セクター・サイズは、ページ・サイズと同じになるように設定されます。 (バグID 17087232)
-
UEK R4で使用する
btrfs-progs
とbtrfs-progs-devel
パッケージは、ol6_x86_64_UEKR4
とol7_x86_64_UEKR4
ULNチャネルとol6_UEKR4
とol7_UEKR4
Oracle Linux yumサーバー・リポジトリで利用できます。 UEK R3では、これらのパッケージは、ol6_x86_64_latest
およびol7_x86_64_latest
ULNチャネルとol6_latest
およびol7_latest
Oracle Linux yumサーバー・リポジトリで利用可能になりました。
efivarfs
Unified Extensible Firmware Interface (UEFI)変数ファイル・システム(efivarfs)が、UEFIをサポートするシステムで使用できます。 Oracle Linux 7の場合、systemd
は自動的にefivarfs
をマウントします。 Oracle Linux 6の場合、efivarfs
はデフォルトでマウントされません。 必要に応じ、次のようにして、efivarfs
をマウントできます:
# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
ext4
次のext4機能が実装されています:
-
ファイル・システムを作成する際に、
metadata_csum
オプションを指定してメタデータ・チェックサムを有効にできます。 -
ファイル・システムを作成する際に、
64bit
オプションを指定して、64ビット・ファイル・システムのサポートを有効にできます。これにより、16TBより大きいファイル・システムの書式設定が可能です。 -
データベース・ワークロードの同期速度が向上しました。
-
nodelalloc
オプションを使用して遅延割当てが無効化されている、もしくはext2またはext3互換性モードが使用されている場合、ライトバック・パフォーマンスが向上しました。 -
エクステント・ツリー・メモリー・キャッシュが向上しました。
-
fallocate()
を使用して、ホール・パンチングの安定化が向上しました。 -
lseek()
を使用して、データおよびホール検索が向上しました。
次の機能は実験的であるとみなされ、サポートされていません:
-
fallocate()
で現在、動作しないBig割当て(bigalloc
)。 -
オンディスク・インノード・データ構造間で使用可能な空間内のスモール・ファイルのデータを格納するインライン・データ。
-
mke2fsを使用してディレクトリからファイルシステム・イメージを作成します。
-
pathname
マウント・オプションを使用した外部ジャーナルの指定。
FUSE
次のFUSE機能が実装されています:
-
非同期I/Oのサポート。
-
最適化されて短いダイレクト読取り。
-
writeagesコールバックにより、
mmap
を使用してメモリーでマップされた書出しが向上します。
キャッシュ済ライトバックのサポートは、Oracle Linux 6およびOracle Linux 7で提供されるユーザー空間アプリケーションでは、現在サポートされていません。
NFS
次のNFS機能が実装されています:
-
NFSv4.2のクライアント・サポート。
詳細は、http://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-20を参照してください。
-
SELinux Labeled NFSを使用すると、多数の異なるラベルをNFS共有で使用でき、仮想化イメージ・ファイルおよびホーム・ディレクトリの保護に役立ちます。
Overlayfs
overlayfsファイル・システムは、複数のファイル・システムをマウント時に単一のファイル・システムとして表示する結合ファイル・システムの実装です。 overlayfsファイル・システムは、「下位」ファイル・システムと、単一のファイル・システム・ネームスペースを共有する「上部」ファイル・システムで構成されます。 overlayfsファイル・システムで1つのファイルを開くと、基礎にある下位または上位ファイル・システムに対してすべての操作が直接実行されるため、実装が簡素化し、他のファイル・システム実装に比べ本来のパフォーマンスが可能です。 読取り専用OSイメージを下位ファイル・システムとして使用し、書込み可能なRAM後置ファイル・システムを上位ファイル・システムとして使用するのが、一般的な使用方法です。 変更されたデータは、上位ファイル・システムのみに書き込まれ、OSイメージには書き込まれません。
上位および下位ファイル・システムはどちらも、同一のファイル・システム内で直接ツリーにすることができ、ファイル・システムのルートにする必要はありません。 下位ファイル・システムは、overlayfsファイル・システムを含むサポートされている任意のファイル・システムで、書込み可能である必要はありません。 上位ファイル・システムが書込み可能の場合(通常は書込み可能です)、ファイル・システムはtrusted.*
拡張属性の作成をサポートし、有効なd_type
ファイル・タイプをreaddir()
で返されるdirect
構造に指定する必要があります。 たとえば、NFSファイル・システムは上位ファイル・システムで使用できません。
overlayfsファイル・システムは、UEK R3では使用できません。
詳細は、https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txtを参照してください。
メモリー管理
次の重要なメモリー管理機能が、UEK R4に実装されています:
-
MAP_HUGETLB
フラグが、mmap
に実装され、hugetlbfs
を使用したヒュージ・ページ・メモリー・マッピングをサポートしています。 -
膨大なコピー操作中、またはメモリーが少ない場合に、kswapdおよびページ回収動作に問題が発見されています。
-
パージ表内のロック競合の削減により、スレッド化ヒュージ・パージ・ワークロードでのページ表アクセスのスケーラビリティが向上しました。
詳細については、https://lwn.net/Articles/568076/を参照してください。
-
同時実行ページ・フォルトの処理により、
hugetlb
内のページ・フォルト・スケーラビリティが向上しました。 以前は、カーネルが一度に処理できるのは、単一hugetlb
ページ・フォルトのみでした。 一般的に、約5000ページ表のフォルトを生成する10GBのOracleデータベースの起動時間は、37.5から25.7秒に削減されました。 将来のワークロードは、起動時間がより一層向上します。 -
既存の起動時間割当てに加えて、実行時の
hugetlb
の巨大なページ割当てがサポートされています。 -
unqueued slab allocator (SLUB)が、カーネル・オブジェクトのデフォルトのメモリー・アロケータです。 SLUBは、以前は同一タイプのデータ・オブジェクトに割り当てられたメモリーを再利用することにより、メモリー割当ておよび割当ての取消しで発生するフラグメンテーションを除去します。
ネットワーク
次の重要なネットワーク機能が、UEK R4に実装されています:
-
次のVXLAN機能が実装されています:
-
レイヤー3への切換えへのレイヤー2のリダイレクト。
-
ユニキャスト・アドレスへの宛先の設定。
-
UDPトンネルのセグメント化。
-
IPv6のサポート。
-
VXLANデバイスへの送信側VLANオフロード。
-
UDPv4チェックサムの送信、およびUDPv6チェックサムの送信および受信のリンク構成。
-
パケットがカプセル化される、またはカプセル化を解除される際の、ネットワーク名前空間の切換え。
-
-
ソケットごとのネットワーク・ポーリングが、
bnx2x
、ixgbe
およびmlx4
ネットワーク・カード・ドライバでサポートされ、これにより、NAPIの周期的ポーリング・メソッド内のレイテンシ固有を削減します。詳細は、https://lwn.net/Articles/551284/および2012-lpc-Low-Latency-Sockets-slides-brandeburg.pdfを参照してください。
-
新しいPIE (Proportional Integral controller Enhanced)ネットワーク・パケット・スケジューラにより、平均的なキューイング・レイテンシが制御され、様々な競合シナリオの元で、非常に少ないオーバーヘッドで、過剰なバッファを克服し、レイテンシを低く抑え、リンク使用率を高めることができます。
詳細は、https://tools.ietf.org/html/draft-pan-tsvwg-pie-00を参照してください。
-
ipコマンドを使用して、SR-IOV仮想機能(VF)の最小および最大の伝送速度を構成するためのサポート。
詳細は、git commit ed616689a3d95eb6c9bdbb1ef74b0f50cbdf276aを参照してください。
-
ipコマンドを使用したSR-IOV VFリンク状態制御のサポート。 以前は、VFリンクは、物理的なリンク状態に関係なく常に有効で、物理関数(PF)リンク状態が接続されていない場合でも、同一の仮想EthernetブリッジのVMとの通信が可能でした。 ただし、VFがアクティブ/スタンバイ・モードに結合されている場合、VFで使用する物理リンクが切断されると、この構成はファイルオーバーができませんでした。 ip link setコマンドを使用して、VFリンクの動作を構成できるようになりました:
# ip link set device vf number state { auto | enable | disable }
可能な設定は、次のとおりです。
- auto
-
VFリンク状態は、PFリンク状態で決定されます。 この設定は、アクティブ/スタンバイ・モードに結合されたVFで適しています。
- disable
-
VFリンク状態は、永久に切断されています。
- enable
-
VFリンク状態は、永久に接続されています。 これがデフォルトの設定です。
-
次のOpen vSwitch (OvS)機能が実装されています:
-
Generic Routing Encapsulation (GRE)トンネル。
-
ユーザー空間トンネリング・インタフェース。
-
Stream Control Transmission Protocol (SCTP)のサポート。
-
VXLANトンネリングのサポート。
-
ワイルド・カード化フローの実装。
-
TCPビット単位フラグの一致。
詳細は、git commit 5eb26b156e29eadcc21f73fb5d14497f0db24b86を参照してください
-
ユーザー空間で、アライメントされていないNetlinkメッセージを受け入れる能力を宣言することができます。
-
メモリーでマッピングされたNetlink I/Oの有効化。
-
Open vSwitchブリッジでトンネルのGeneric Segmentation Offloading (GSO)が有効化され、Open vSwitchは、下部にあるデバイスへのハードウェア・オフロードを使用できます。
-
recirc
およびhash
アクションが追加され、結合されたデバイスのポート間へのパケットの配布をサポートしています。 -
Generic Network Virtualization Encapsulation (Geneve)トンネリングに対するサポートが追加されました。
-
-
nftables
フレームワークは、arptables
、ebtables
、iptables
およびip6tables
フレームワークにかわって、パケット・フィルタリングおよびパケット分類機能を提供します。 例については、https://lwn.net/Articles/564095/を参照してください。次の
nftables
機能が実装されています:-
iptables
が置き換えられ、上位互換性が提供されています。 -
IPv4およびIPv6のマスカレード
-
ルーティング前およびルーティング後のフィルタリング。
-
NFT_MSG_DELTABLE呼出しが拡張され、ルール・セットのフラッシュがサポートされています。
-
会計オブジェクトのスキップに対するフィルタ・サポートが追加されています。
-
ルール・セット生成IDのエクスポートに対するサポートが追加されています。
-
CPU番号に一致するパケットに対するCPU属性のサポートが追加されています。
-
リンク・レイヤー情報に基づいた
inet
、ip
およびipv6
表ファミリに一致するパケット・タイプに対するサポートが追加されています。 ループバック・トラフィックでは、パケット・タイプはネットワーク・レイヤー・ヘッダーから推測されます。 -
パケットの受信または送信インタフェースのデバイス・グループの一致に対するサポートが追加されています。
-
-
TCP Fast Open最適化は、この機能を使用するアプリケーションに対して、UEK R4でデフォルトで有効です。
-
Generic Network Virtualization Encapsulation (Geneve)は、レイヤー3ネットワーク上にレイヤー2ネットワークを確立するトンネリング・フレームワークを提供します。
詳細は、http://tools.ietf.org/html/draft-gross- geneve-01およびhttp://blogs.vmware.com/cto/geneve-vxlan-network-virtualization-encapsulations/を参照してください。
-
送信キューのバッチは、送信ソケット・バッファのネットワーク・ドライバへのフラッシュを遅延させるため、送信キューを処理する全体的な費用を削減し、パケット送信率の効率を向上できます。
i40e
、igb
、ixgbe
、mlx4
およびvirtio_net
ドライバが、この機能をサポートしています。詳細は、https://lwn.net/Articles/615238/およびhttp://netoptimizer.blogspot.com/2014/10/unlocked-10gbps-tx-wirespeed-smallest.htmlを参照してください。
NUMA
多くの最新のマルチプロセッサは、Non-Uniform Memory Access (NUMA)メモリー設計があり、プロセスのパフォーマンスはアクセスされたメモリー範囲がローカルCPUまたはべつのCPUに添付されているかどうかに従い、決定されます。 メモリーのローカルの種類によりパフォーマンスが異なるため、メモリー・コントローラがアクセス対象のメモリーに接続されているオペレーティング・システムはプロセスがCPUで適切に実行されるようにスケジュールする必要があります。
次の重要なNUMA機能が、UEK R4に実装されています:
-
未結合のワークキューに対するNUMAアフィニティがサポートされています。
-
新しいNUMAサブシステムは、NUMAシステムに向上したパフォーマンスを提供します。 新しいNUMAポリシーは、メモリーの近くへのプロセスの配置、プロセス間でのページの共有、透過的なヒュージ・ページの処理を試みます。(3.8、3.13)
次のsysctlパラメータを使用すると、NUMAスケジューリングを有効化、無効化およびチューニングできます:
-
numa_balancing_scan_delay_ms
-
初回の分岐でタスクを起動する場合に使用するミリ秒単位のスキャン遅延。
-
numa_balancing_scan_period_max_ms
-
タスクをスキャンする間隔のミリ秒単位の最大遅延。
-
numa_balancing_scan_period_min_ms
-
タスクをスキャンする間隔のミリ秒単位の最小遅延。
-
numa_balancing_scan_period_reset
-
スキャン遅延の間隔をリセットします。
-
numa_balancing_scan_size_mb
-
スキャンごとにスキャンされるページのMB単位の量。
詳細については、https://lwn.net/Articles/568870/を参照してください。
-
-
numa_balancing
sysctlパラメータを追加して、NUMAメモリーの自動バランシングを有効または無効にします。 -
NUMA移行のアルゴリズムが向上し、1つのNUMAノードに収まらないワークロードのパフォーマンスを最大化します。
-
デフォルトで、64ビットNUMAシステム上に、ページ・アロケータを使用して、ノード順にメモリー・ゾーンが割り当てられます。
リアル・タイム
-
Dynamic Tickおよび完全なCPU時間課金インフラストラクチャ。
-
タイマーなしのマルチタスクのサポートにより、従来のマルチタスクの実装で使用したように、タイマーによる中断に追い立てられず、システムでプロセスを実行できます。(3.10, 3.12)
詳細は、https://lwn.net/Articles/549580/およびhttps://lwn.net/Articles/558284/を参照してください。
-
デッドライン・スケジューリングは、
SCHED_DEADLINE
スケジューリング・クラス内のスケジューリング・プロセスにdeadline
、period
およびruntime
パラメータを提供します。 これらのプロセスは、実行時間のruntime
ミリ秒を受信するよう保証され、各period
ミリ秒およびこれらのruntime
ミリ秒は間隔の始まりからのdeadline
ミリ秒内で入手可能です。 タスク・スケジューラは、最も低いdeadline
値でプロセスを実行します。詳細は、「gitのドキュメント712e5e34aef449ab680b35c0d9016f59b0a4494c」およびhttps://lwn.net/Articles/575497/を参照してください。
セキュリティ
次の重要なセキュリティ機能が、UEK R4に実装されています:
-
カーネル・イメージの圧縮が復元される物理および仮想アドレスは、カーネル内部の場所の認識に基づくエクスプロイト試行を妨ぐためにランダム化されます。
-
Kexec機能により、クラッシュ後に迅速に再起動するまたは自動的に新しいカーネルを起動することができますが、現在、署名されたKexecカーネルのみでUEFIセキュア起動で使用を許可するサポートを取り入れています。
-
kexec_load_disabled
sysctl
パラメータを使用すると、Kexecを無効化して、権限昇格攻撃からシステムを保護することができます。 -
exe
フィールドが追加され、コア・ダンプを生成する実行可能ファイルのパス名を記録するログを監査します。 -
audit_backlog_wait_time
構成オプションが追加されて、サブシステムを監査するため、auditd
が保持されない、またはブロックされた場合でも、呼出し元はブロックされません。 -
audit_backlog_limitパラメータの値がゼロに設定された場合、バックログ・キューの長さはシステム・メモリーの量のみに制限されます。
-
デフォルトで、
AUDIT_NEVER
ルールのエラーがログ出力されるようになりました。 -
サブシステムの監査は、機能の状態が変更された場合にタスク情報をログ出力するようになりました。
-
netlinkマルチキャスト・ソケットが、
systemd
のような読取り専用のユーザー空間クライアントに追加され、監査ログへの読取り専用のアクセスが可能になりました。 -
getrandom
システム呼出しにより、ランダムな番号がセキュアに生成されます。 Linuxシステムは、従来、そのランダムな番号を/dev/[u]random
から取得していました。 このインタフェースは、攻撃者がすべての使用可能ファイル・ディスクリプタを消費するファイル・ディスクリプタ消耗攻撃に対して脆弱であり、また、コンテナでの使用が不便です。getrandom
システム呼出しは、OpenBSD内のgetentropy
呼出しと同様、これらの問題を解決します。 -
SELinuxは、
avc: denied
メッセージに許容モードでレポートします。
ストレージ
次の重要なストレージ機能が、UEK R4に実装されています:
-
デバイス・マッパー
dm-cache
ターゲットにより、SSDなどの高速デバイスを、回転ディスクなど速度の遅いデバイスのキャッシュとして使用できます。 様々なポリシー・プラグインを使用して、レベル上げ、レベル下げ、ブロックの削除などのアクションを実行するアルゴリズムを変更できます。dm-cache
は、ライトバックおよびライトスルー・モードのいずれもサポートしています。 この機能は、まだ実験的な位置付けで、本番システムに適していない場合があります。dm-cache
への更新では、キャッシュ・コンテンツが基礎にあるデバイス、キャッシュ・ブロック失効およびキャッシュ縮小と一貫性がない場合の、パススルー・モードのサポートが追加されています。詳細は、https://www.kernel.org/doc/Documentation/device-mapper/cache.txtを参照してください。
-
Bcacheは、ブロック・レイヤー・キャッシュで、SSDを使用して速度の低いブロック・デバイスをキャッシュできます。 Bcacheはライトバックおよびライトスルー・キャッシュのどちらも実行でき、ファイル・システム依存性を持たず、使用方法が簡単で、どのような設定でも構成を必要とせずに十分に動作します。
詳細は、https://www.kernel.org/doc/Documentation/bcache.txt、https://bcache.evilpiepirate.org/およびhttps://lwn.net/Articles/497024/を参照してください。
-
高パフォーマンスのSSDストレージをサポートする新しい、スケーラブルなマルチキュー・ブロック・レイヤー・サブシステム(
blk-mq
)は、CPUごとの送信キューを実装して、ハードウェア送信キューにダイレクト送信されるI/Oリクエストを受信します。 異なるCPUごとの送信およびハードウェア送信キューは、複数のCPUを介したI/Oワークロードのバランスを取り、レイテンシを低下させます。 設計上、従来のブロック・レイヤーのインタフェースおよび機能をサポートしていますが、NVM-ExpressまたはハイエンドPCI-Eデバイス、およびマルチコアCPUの機能を使用することで、毎秒数百のI/O操作もサポートできます。詳細については、https://lwn.net/Articles/552904/を参照してください。
-
デバイス・マッパー
dm-era
ターゲットの動作は、定義可能な時間間隔であるera内に書き込まれた任意のブロックの追跡に加え、linear
ターゲットと類似しています。 一般的な使用方法は、キャッシュ内容の部分的な無効化によりスナップショットをロールバックした後、バックアップ・ソフトウェア内の変更されたブロックを追跡する、およびキャッシュ整合性をリストアすることです。詳細は、https://www.kernel.org/doc/Documentation/device-mapper/era.txtを参照してください。
OFEDサポート
OpenFabrics Enterprise Distribution (OFED) 2.0スタックがUEK R4に統合されました。これにより、x86-64アーキテクチャを含むシステムでは、OracleブランドのすべてのInfiniBand (IB)ハードウェアがサポートされます。 次のものが含まれます。
-
Sun InfiniBand Dual Port 4x QDR Host Channel Adapters M2
-
Oracle Dual Port QDR Infiniband Adapter M3
-
Oracle Dual Port QDR InfiniBand Adapter M4
-
Oracle Dual Port EDR InfiniBand Adapter
OFED 2.0では、次のプロトコルをUEK R4でサポートしています:
-
iSCSI Extensions for RDMA (iSER)は、iSCSIストレージ・デバイスへのアクセスを提供します。
-
Reliable Datagram Sockets (RDS)は、高パフォーマンス、低レイテンシ、信頼できるコネクションレスなデータグラム配信用のプロトコルです。
-
Sockets Direct Protocol (SDP)では、RDMAネットワーク・ファブリック用のストリーム・ソケットがサポートされます。
-
Ethernet over InfiniBand (EoIB)
-
Internet Protocol over InfiniBand (IPoIB)
ノート:
Ethernet tunneling over IPoIB (eIPoIB)は、UEK R4ではサポートされていません。
OFED 2.0では、次のRDS機能をUEK R4でサポートします:
-
非同期送信(AS)
-
サービス品質(QoS)
-
アクティブ結合(AB)
-
Netfilter (NF)
-
共有リクエスト・キュー(SRQ)
ノート:
自動パス移行(APM)は、UEK R4ではサポートされていません。
IB、OFEDおよびRDSのサポートはカーネルに統合されています。 OFEDのユーザー・スペースRPMは引き続き提供されますが、kernel-ib
およびofa-kernel
RPMは必要ありません。
仮想化
次の重要な仮想化機能が、UEK R4に実装されています:
-
netpoll
に対するHyper-Vサポートにより、ネットワーク・コンソールを使用して、カーネルで発生する問題をデバッグできます。 -
次のXen機能が実装されています:
-
インタフェースのMACアドレスを変更する
xen-netback
のサポート -
CPUおよび新しいメモリー・ホットプラグ・ドライバを含むメモリー・ホットプラグに対するACPIサポート。
-
ゼロコピー統計およびTX認可マッピングの収集に対する
xen-netback
サポート。 -
Dom0内でのMSIメッセージ・グループに対するサポート。
-
xen-netback
とxen-netfront
間での複数キューのサポートの実装によるXen仮想ネットワーク・インタフェースのパフォーマンスの大幅な向上。 -
Dom0でのEFIサポート。
-
Dom0からXen PVまたはHVMゲストへのSCSIデバイスまたはLUNの高パフォーマンス・パススルーに対するXen PVSCSIバックエンドおよびフロントエンド・ドライバのサポート。
-
非連続ページがDom0内で発生するのを防ぐために、一意マッピングに置き換える既存のMFNの再マッピング。
-
PVチケット・ロックが向上し、このメカニズムに依存するワークロードのゲストを効率的にロックできるようになりました。 短期間でしかスピン・ロックが使用できない場合、ロック・コードはスピンを停止して、ハイパーバイザを呼び出し、ロックが再び使用できるまで待機します。
-
NUMAトポロジおよびゲストへのI/Oのエクスポージャ。
-
PVHゲストは、準仮想化ハードウェア拡張(v3)をサポートしています。
-
Zram
Zramは、RAM内の指定されたブロック・デバイスに書き込まれたすべてを圧縮し、一般的に、スワップ・デバイスで使用すると、メモリー量が制限されたシステムの応答性が向上します。 次の例では、zramスワップ・デバイスの作成および有効化の方法について示します:
# mkswap /dev/zram0 # swapon /dev/zram0
次の例では、ファイル・システムをzramデバイス上に作成し、そのファイル・システムをマウントする方法を示します:
# mkfs.ext4 /dev/zram1 # mount /dev/zram1 /tmp
次の重要なzram機能が、UEK R4に実装されています:
-
zramは、
drivers/block/zram
へのステージングから除去されました。 -
LZOに加え、LZ4圧縮のサポート。
-
複数の圧縮ストリームでの同時圧縮のパフォーマンスの向上。
-
/sys/block/zramN/comp_algorithm
での圧縮アルゴリズムの切り替えのサポート。 -
/sys/block/zramN/mem_limit
内のzramデバイスの最大使用可能メモリー量を制限するためのサポート。 値の設定で、メモリー単位接尾辞を使用できます。たとえば、次のようにします:# echo 1G > /sys/block/zram0/mem_limit
制限を無効にするには、値を0に設定します。
-
/sys/block/zramN/mem_used_max
でzramデバイスが消費した最大メモリーの表示のサポート。 このファイルに0を書き込むと、カウンタがリセットされます。
Zswap
Zswapは、RAMにスワップされたページの圧縮を試みるスワップ・ページのための、軽量で、ライト・ビハインドで圧縮されたキャッシュ・メカニズムです。 圧縮が成功すると、スワップ・デバイスへのライトバックが遅延し、多くの場合はライトバックを防ぐため、I/Oが減少し、スワップされているシステムのパフォーマンスが向上します。
詳細については、https://lwn.net/Articles/537422/を参照してください。