Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

LinuxのKernel NET policyの概要

More than 3 years have passed since last update.

はじめに

7月18日にLKML, net-dev MLで提案された(Kernel) NET policy 1 について調べてみました。

NET policyとは?

Linuxの通信性能は初期設定でもそれなりに高いですが、より高い性能を出すためには様々な設定を最適化しなければいけません。NET policyは、指定したポリシ(スループット重視や遅延重視等)に従ってカーネルが設定の最適化を自動的に行なう機能です。

ポリシはソケット単位、タスク(プロセス)単位、デバイス単位で指定できます。(本稿では便宜的にターゲットと呼ぶ。)

NET policyはマルチキューNIC向けに設計されていて、現在の対応NICはIntelの40 GbE (i40e)のみですが、マルチキューNICであれば、他のNICにも実装可能のようです。

API

  • デバイス
    • /proc/net/netpolicy/$DEV/policy
  • タスク
    • /proc/$PID/net_policy
    • prctl(PR_SET_NETPOLICY, POLICY_NAME, NULL, NULL, NULL)
  • ソケット
    • setsockopt(sockfd,SOL_SOCKET,SO_NETPOLICY,&policy,sizeof(int))

ポリシ

  • BULKポリシ
    • 高スループット重視のポリシ
    • すべてのターゲットに適用できる
  • CPUポリシ
    • 高スループット重視だが、CPU使用量がより低いポリシ
    • すべてのターゲットに適用できる
  • LATENCYポリシ
    • 低遅延重視のポリシ
    • すべてのターゲットに適用できる
  • MIXポリシ
    • スループットと遅延の両方が良くなるように調整するポリシ
    • デバイスターゲットのみ適用可能

性能向上

RFCメールには、初期設定と比べてどの程度性能が良くなるのかが示されていました。性能測定にはnetperfTCP_RRテストを用いています。

  • BULKポリシ
    • スループットが平均で1.26倍
  • CPUポリシ
    • スループットが平均で1.20倍
    • CPU使用量がBULKポリシより平均で5%低い
  • LATENCYポリシ
    • 遅延が平均で53.5%低い
  • MIXポリシ
    • スループット重視のワークロードと遅延重視のワークロードを何種類かの割合で混ぜたテストを実施しているようです。詳しくはRFCメールを参照してください。

おわりに

とりあえず概要だけまとめてみました。次回は個々の最適化について調べてみたいです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away