FreeBSD BSDは、FreeBSD-4.x OSシリーズの論理的な継承となるように設計されたオープンソースのBSDオペレーティングシステムです。 FreeBSD、NetBSD、OpenBSDなど、他のBSDベースのディストリビューションと非常によく似ています。これは、言い換えれば、BSDベースにFreeBSD-5シリーズで取られたものから全く新しい方向に成長する機会を与えてくれる、道のりの分岐点です。さらに、他の類似したOSと区別するためのユニークな機能が含まれています。
ハマーは主要な魅力です
HAMMERは、歴史的なアクセス機能とミラーリング機能を備えた最新の高性能ファイルシステムであるDragonFlyの主なアトラクションです。カーネルは、FreeBSDがより良いBSDディストリビューションである理由の1つです。
カーネル用に2つの異なるスケジューラを提供します
FreeBSDカーネルには、すべての実行可能エンティティ(軽量カーネルスレッド)をスケジューリングする2つのスケジューラと、プロセッサごとに1つのユーザスレッドを選択してユーザスレッド(ユーザスレッドスケジューラ)を抽象化する別のスケジューラがあります。さらに、カーネルには、オブジェクト指向のメモリアロケータとkmalloc()、DragonFlyデバイスファイルシステム(DEVFS)、仮想カーネル(VKERNEL)、NFS V3 RPC非同期、およびディスクI / Oスケジューラフレームワーク(dsched)。
機能、多くの機能
他の興味深い機能の中でも、非ループの任意のマウントポイント、TMPFS(一時ファイルシステムVFS)、透過ディスク暗号化、管理SSD(Solid Storage Device)サポート、バリアント(コンテキスト-sensitive)シンボリックリンク、DNTPD(DragonFly Network Time Daemon)、DMA(FreeBSD Mail Agent)などがあります。さらに、ユーザーはいつでもディスクへのプロセスをチェックポイントまたはサスペンドすることができます。このディストリビューションは強力なAHCIドライバ、安定したデバイス名、十分に基礎のある暗号化とボリューム管理を提供します。
結論
全体として、DragonFlyは、モダンで使いやすく、非常にアクセス可能なUNIX風のオペレーティングシステムであることが証明されています。
このリリースでの新機能:
DragonFlyバージョン5.2.1がリリースされました。これは、デスクトップシステムとして、または強力なBSDサーバーとして日常的に使用できます。 Meltdown / Spectreの軽減、HAMMER2、ipfw、および加速ビデオの多くの改善、CVE-2018-8897の(5.2.1アップデートの)修正。
バージョンの新機能:
Christian Groessler(1):
telnetd:ログインプロンプトの前にシステム情報(OSとアーキテクチャ)を表示します。
マシュー・ディロン(7):
hammer2 - 0レースで除算を修正
カーネルumtxのマスターからの選択的なMFC
kernel - umtxのドキュメントを更新する
libcとpthreads - atforkのnmallocに関する問題の修正、dmallocの更新
hammer2 - 名前変更レースの修正
hammer2 - 最適化hammer2_pfs_memory_wakeup()
hammer2 - 名前の変更による不確定なダーティチェーンの修正
サシャワイルナー(5):
hammer2.8:入力ミスを修正しました。
さまざまな場所で「ハンマー」の代わりに「ハンマー2」と言ってください。
mtree:/ usr / shareにあるいくつかのディレクトリの所有者を修正しました。
libc / nls:現在のロケールを使用します(スレッドによって設定されます)。
libarchive:プッシュするつもりはなかったコミットを元に戻します。
バージョン4.8.1の新機能:
カーネル:
ダイナミックKVA予約を削除するバッファー・キャッシュ・コードをリファクタリングします。代わりに、すべてのKVAはブート時に予約されています。不要なIPIから私たちを救い、バッファキャッシュコードを大幅に単純化することができます。
vfs.repurpose_enableを追加します(テスト中、デフォルトでは無効になっています)。この機能を使用すると、通常のVMページリサイクルメカニズムをバイパスして、NVMe SSDなどから大量のファイルI / Oを実行しているマシンのIPIおよびVM管理負荷を大幅に削減できます。有効にすると、I / O負荷が高い場合にのみ機能がトリガされます。これは、バッファのKVA内のページをkremove / kenterする必要がないように、(可能であれば)バッファをその場に置くVMページを再利用することによって機能します。通常のVMページのリサイクル(I / O負荷によって圧倒される)もバイパスされます。
IPIQの処理方法を変更します。特に、クリティカルセクションが保持されていても無視する(動作する)ページ無効化のための独立したXinterruptベクタメカニズムを作成します。 tlb無効化IPIをアイドル状態のCPUに送信しないようにするmachdep.optimized_invltlbを実装します(デフォルトではテスト中は無効になっています)。
HAMMERバグを修正しました。これにより、データCRCエラーが不適切に報告される可能性があります。
HAMMERがcluster_write()を使う方法でトリガーされたダブルライトを修正しました。これにより、HAMMERの書き込みパフォーマンスが大幅に向上します。
他にも数多くのハマークリーンアップと修正が入っています。
アトミックオペレーションの戻り値の誤った解釈のためにgetpbuf *()で発生する可能性のあるハードロックを修正しました。
カーネルスタックを実行している可能性がある(ただし、野生では見つからない)10命令ウィンドウで発生するスタッキング割り込みを修正しました。特定のバッファキャッシュ操作では、TLBを無効化しないようにpmapに関連するIPIを半分にカットし、前の内容が無効であっても新しいPTEを入力するときは常にTLBを無効にします。これにより、パフォーマンスが向上し、問題のある最適化が削除され、デバッグが容易になります。
多数の困難なトリガSMPレースを修正します。特に、バルクビルドが引き起こす可能性のある異なるマウントポイントの同時マウントを実行することに関連するものがあります。 mountctlとumountの競合も修正してください。
スイッチパス内のアトミック操作の数を減らします。
極端な負荷の下でmount / umountアクティビティが多数発生する可能性のある、ネームキャッシュ競合/パニックを修正しました。
%ripサンプリングをrootに制限します。
スレッド化されたときにvfork()のgetpid()の問題を修正しました。特に、スレッド化されたプログラム内の並行vfork()は、間違ったPIDをexecの前に子のgetpid()によって返す可能性があります。
tsleep()が完全に設定される前にコールアウトタイマーがトリガーされると、珍しいスリープ/コールアウトレースを修正します。
コンソール上にnamecache stallメッセージをクリーンアップします。特に、関係するスレッドの適切な経過時間とtd_commを報告します。大量のRAMを搭載したシステムの起動時間を改善するために、メモリテストと初期ブートゼロをさらに減らします。
アイドルページゼロ化コードを完全に削除します。オンデマンドで最新のCPU上のページをゼロにすることは、多くの理由でより優れており、キャッシュ効果のために、ページ内のデータにアクセスするコンシューマーと組み合わせると実際にはより高速になることがあります。不要になったため、PG_ZEROを削除してください。 PG_ZEROを削除すると、クロスコンタミネーションの可能性のある別のソースを削除することで、カーネルのデバッグがさらに容易になります。
カーネルメモリ割り当てのためのCPUローカライズの実装とリファクタリングを完了します。 NUMAの意識と組み合わせる。これは、CPUローカライズされたまたは短命のカーネルデータ構造で機能します。 2つはVMページの色分けコードであったPQ_L2_SIZE抽象化で結合されています。このコードでは、CPUのローカライゼーションとNUMAの認識も処理するようになりました。
多くのvkernelの問題を修正し、vkernelのパフォーマンスを大幅に改善します。
プログラムが実行中のプログラムのパスを見つけるために使用するsysctl kern.proc.pathnameを更新します。このsysctlは、完全な正しいパスを返すために十分なデータを格納する前に実装されていました。
IntelのACPICAを同期します(これは通常の発生です)。memcpy()アセンブリABIを修正してください。アセンブリは元の(dst)引数を返していませんでした。 GCCがコード生成中にmemcpyを呼び出すことが時々あると、既知の問題を修正するのではなく、穴を閉じる。
多くの場合、-O2の警告とエラーを解決します。カーネルはデフォルトで-O2にコンパイルされました。
ACPIパス(バグのACPIコード)で不適切な歩留まりを回避する方法を追加してください。
保留中の信号によって間違った時間にトリガされる可能性のあるSTOP / CONTレースを修正しました。
スレッド化されたコアダンプは、同じプロセスの複数のスレッドが同時に同時にseg-faultになったときに、同じことに関連するロックアップを修正し、修正します。
uiomove_nofault()のバグのために発生するCAM / VMデッドロックを修正しました。このため、ページング/スワップの処理中に「不定期の待機バッファ」が発生する可能性があります。
紛失したIPIを検出して処理するコードを追加します。これは主に、いくつかの仮想ホストがIPIを失うことがあるvkernelsのためのものです。実際のCPUはIPIを失うものではありません。
clock_gettime()に対するさまざまな修正。
MPLOCKの多くの痕跡を取り除きます。すべてのクリティカルパスはこのロックから隔離されてからずっと古いですが、それを使用するクリティカルではない場所がいくつか残っています。低メモリプロセスのコードを再作成し、機能が動作しなくなる可能性のある多数のレースを修正します。
VMMとのシステムロックアップを修正し、VMXコードをリファクタリングします。
numvnodesがmaxvnodesに達したときにデッドロックを修正しました。また、 'df'またはファイルシステムの同期レースがumountのときに、小さなカーネルメモリリークを修正してください。また、maxvnodesの計算を控えめに減らしてください。たとえば、8GBのRAMを搭載したマシンでは、maxvnodesが598103ではなく478483に設定されます。
スピンロックを保持している間にuser_yield()が不適切に呼び出されたときにvm_object_page_remove()によってトリガされる珍しいパニックを修正し、次に降格することを決めました。
いくつかの動的に割り当てられたカーネル構造のサイズを減らす。特に、過剰なサイズのinodeハッシュテーブルの割り当てがより少なくなりました。主にUFS(DragonFlyBSDはあまり使用しません)に影響します。
AMD erratum 793の回避策を追加してください。
スタックされたcluster _ *()I / O呼び出しで発生するデッドロックを修正しました。
再帰的なモジュールのロードがデッドロックする可能性のあるバグを修正しました。
NFS sillyrenameコード(サーバー側NFS)に愚かなバグを修正しました。これにより、NFSサーバーのsillyrenameコードは、名前が変更されたばかりのファイルを決して削除しませんでした。どのように愚かな!high-ncpu + low-memory構成に対応して、より良い仕事をしてください。
共有スピンロックをリファクタリングして、複数のCPUが同時に共有スピンロックを取得したときに発生するスピンの量を減らします。
ネームキャッシュ操作をオーバーホールして、SMP競合をさらに低減します。これにより、多くのコアを搭載したシステムで、競合しない単一コンポーネントのパフォーマンスが少なくとも25倍向上し、vnodeおよびマウント構造のrefおよびunref操作が大幅に削減されます。
他の多くのカーネル構造を見直し、キャッシュのローカリティを改善し、キャッシュラインのバウンスを減らします。
SMBFSのファイル名変更コードにバグを修正しました。
プロセスごとにローカライズされたページングを強制する、プロセスごとのRSSリミッタRLIMIT_RSSを実装します。この機能を使用して、1つのプロセスが残りのマシンをハードケースにするのを防ぐことができます。
サポートされている最大スワップ領域を増やします。最大値は主にラムによって制限され、数十テラバイト(サポート管理構造に十分なRAMがある場合)になります。また、カーネルのKVMを128Gから511Gに増やしてください。動的なpmap削除を実装する(デフォルトでは無効)。これにより、pmapから中間ページテーブルのページとPDが即座に削除されます。メモリがプレミアムである場合には便利ですが、有効にすると、高速でメモリを割り当てたり割り当てを解除するプログラムの実行が遅くなることに注意してください。
ユーザーの「良い」レベルがどのように機能するかをリファクタリングして、選択されたnice値を従来よりも重要なものにします。
Matt Dillonが書いた、高性能ネイティブNVMEドライバをDragonFlyに追加しました。このドライバは、MSI-Xベクトルと、デバイスがサポートする使用可能なすべてのキュー、ロックなしまたは最小限のロック(ほとんどの場合、SMP競合なし)を使用したCPU単位のローカライゼーションを使用し、IOPSとスループットを狂わせることがあります。
グラフィックス:
BroadwellとSkylakeを安定させ、Linux 4.6に相当するDRMを提供します。
移植を容易にするLinux i2c APIを実装します。
ロックの順序の逆転など、いくつかの古いバグを修正しました。これは、ビデオ再生をストールアウトする可能性があります(Xの残りの部分)。
ユーザプロセスがdrmヘルパースレッドよりも高い優先度を持つことを許可したカーネルdrmスレッドの優先順位ミスを修正しました。これは、ブラウザで報告されたほとんどの一時的なビデオストールを修正します。EFIフレームバッファをDRMに渡して処理し、syscons VTスイッチングを改善し、関連するデッドロックを修正します。また、パニックが発生したときに、カーネルがXからコンソールVTにスイッチバックしようとしました。
ネットワーキング:
ボード全体で多くの改善。
iwm - 反転論理による問題を修正しました。パフォーマンスを大幅に向上させるその他多数の改良。
wlan - 非同期bgスキャンおよびその他の機能のサポートが追加されました。
その他のドライバ:
nvme - デフォルトのカーネルビルドに加えて、修正とパフォーマンスの向上。
mmcsd - 重要なeMMCサポートがDragonFlyに追加されました。
ahci - 破損したチップセット、特にポートマルチプライヤをサポートするために、いくつかの互換性の調整や追加された機能が追加されました。また、チップセットでサポートされている場合は、FBS(FIS-Based-Switching)を実装します。
TrackpointとElantechのサポートが追加されました。
ユーザーランド:
systatは、同じドライバに属する複数の割り込みを崩壊させるように強化されました。systat -vm 1は、より有益な情報を報告したり、フィールドが互いの中に入り込まないように展開したりするために、大幅に強化され改良されました。ブロックデバイスのマッチに 'nvme'を追加します。また、拡張vmstatsの表示を調整し、ozfodとnzfodの報告方法を変更します。
'vmstat 1'の出力がリファクタリングされました。 30年前に存在していた現代的な機械の高性能のために、すべてのフィールドはお互いに走っていました。
mount_nullおよびmount_tmpfs操作からの不要なmountlistスキャンおよびコマンドを減らすために、mount / mountdシグナリングを変更してください。 mount / umountの重い同時使用では本当に重要ですが、バルクビルドは実際にその状況を作り出します。
O_CLOEXECをアトミックな方法で使用しないため、libcがトリガできる多数のfork / exec *()リークを修正しました。 popen()やmk * stemp *()(mkostemp()とmkostemps()を追加)などの関数に、さまざまなO_CLOEXEC機能を追加します。スレッド環境で実行しているときに、popen()でファイル記述子のリークを修正しました。
新しいサブプロセスのlwpにvfork()を呼び出したTIDと同じTIDを与えることで、vfork()のpthreadsをより良くすることができます。これにより、pthreadを埋め込むことなく、vfork中にpthreadサポート関数を子プロセスで実行することができます。dports一括ビルドを改善するためのヘッダーに対する多くの互換性修正。
セキュリティ修正のためのいくつかのOpenSSLインポート。
ResSyncをOpenSSHに再同期させると、簡単に更新できます。
カーネルビルドにCFLAGSの代わりにKCFLAGSを使用させることで、カーネルCフラグを分離します。
多くの古いISAドライバをツリーから完全に削除します。 DragonFlyBSDは現在64ビットのみであるため、64ビットプラットフォーム上に存在しない古いドライバを削除することができます。
WORLD_CFLAGSとWORLD_CCOPTLEVELを導入します。デフォルトは-Oです。これにより、-O2など(WORLD_CCOPTLEVEL = 2など)自分の世界を簡単にコンパイルできます。しかし、3以上の使用はお勧めしません。有効な値は0,1,2,3、s、g、 'fast'です。
psがより読みやすくなるように、また適用されなくなった古いフラグを削除し、ちょうど混乱を招くように、psのSTATUSフォーマットを調整します。
小さい割り当てのためにmalloc()の整列を修正しました。 16行目から12バイト目までの割り当てでは、最小整列が16になりました。2のべき乗の割り当ては常に自然に調整されていますが、プログラムの中には '48'のように(例えば)16の倍数を使用するものもあります。 16バイトのアライメントを想定します。
Fortunesがリファクタリングされ、追加されました。powerd - 新しい-H lotemp:hightempオプションを使用してpowerdに温度ベースの管理を追加します。この機能は、冷却が不十分なラップトップやBIOSが過度に高い温度で意図的にスロットルを行う場合に非常に便利です。 Powerdは電源状態の変更(使用可能な周波数のリストを変更する可能性がある)を検出し、電源状態の変更が発生したときにサービスを適切に移行します。
多くのlibthread_xu / pthreadsは、dportsの互換性を改善するための修正と調整を行っています。
vkernelにコピーオンライト機能を追加する。たとえば、複数のvkernelsが、RAMに内部的にそれぞれCOW変更を加えることによって、単一のディスクイメージを使用できるようにします。
/ usr / src / secure rewired、libmdからlibcryptを削除しました。
ベースシステムでは、さまざまなツールがアップグレードされています。
コンパイラがGCC 5.4.1に更新されました。
我々は今LTOと金のリンカーを持っています。
binutils 2.25
少ない481。
OpenSSL / LibRESSLは完全に改良されました。 Baseはlibresslを使用するようになりました。
複数のタイムゾーンの更新。
ハンマーの状態:
その他の改善。このリリースに入っていないことの1つは、異なる多項式を使ってより高速なCRCアルゴリズムを使用するためのバージョンバンプでした。この作業は、テストが完了した後、MFCがリリースする予定です。ただし、リリースでは最も重大なパフォーマンス修正があるため(ファイルシステム書き込み用のcluster_write()コードの修正)、ユーザーはあまり心配しないでください。
ハンマー2ステータス:
開発は続けられますが、最初のリリースではまだ言い訳がありません。
クラン状態:
gcc 4.7に代わるDragonFlyの代替ベースコンパイラとしてclangを使用するための開始フレームワークが追加されました。それはまだ完全ではありません。もちろん、Clangはパッケージとして追加することができます。
64ビットステータス:
DragonFlyは4.6以降の64ビットのみのオペレーティングシステムであり、32ビットハードウェアでは動作しません。
AMD Ryzenのサポートはリリース中であり、新しいRyzenの開発が行われるにつれてさらなる作業がもたらされます。いくつかのcpu-reported-topologyの問題が修正され、MFCされます。現在AMDマイクロコードの更新を解決/再テストするのを待っている安定性の問題がいくつかあります。 Ryzenのユーザーは、私たちがその上にとどまっていることを保証することができます!
バージョン4.8.0の新機能:
カーネル:ダイナミックKVA予約を削除するバッファー・キャッシュ・コードをリファクタリングします。代わりに、すべてのKVAはブート時に予約されています。不要なIPIから私たちを救い、バッファキャッシュコードを大幅に単純化することができます。
vfs.repurpose_enableを追加します(テスト中、デフォルトでは無効になっています)。この機能を使用すると、通常のVMページリサイクルメカニズムをバイパスして、NVMe SSDなどから大量のファイルI / Oを実行しているマシンのIPIおよびVM管理負荷を大幅に削減できます。有効にすると、I / O負荷が高い場合にのみ機能がトリガされます。これは、バッファのKVA内のページをkremove / kenterする必要がないように、(可能であれば)バッファをその場に置くVMページを再利用することによって機能します。通常のVMページのリサイクル(I / O負荷によって圧倒される)もバイパスされます。
IPIQの処理方法を変更します。特に、クリティカルセクションが保持されていても無視する(動作する)ページ無効化のための独立したXinterruptベクタメカニズムを作成します。テスト中のmachdep.optimized_invltlb(デフォルトでは無効)を実装し、tlb無効化IPIをアイドル状態のCPUに送信しないようにします。極端な負荷のもとで発生する可能性のある多数のレースを修正します。ほとんどのユースケースはこれらを引き起こすことはありませんでしたが、ビルドボックスは時折ありました。たとえば、pmapのCPUビットが(2つの命令のために)クリアされ、同じpmapの別のCPUで同時にTLB IPIが発生して、cpuがpmapを使用していることを認識できないという2つの命令競合があった。この修正は、LWP-> LWP(同じproc)スイッチのケースでCR3のリロードの最適化を無効にすることです。
HAMMERバグを修正しました。これにより、データCRCエラーが不適切に報告される可能性があります。
HAMMERがcluster_write()を使う方法でトリガーされたダブルライトを修正しました。これにより、HAMMERの書き込みパフォーマンスが大幅に向上します。
他にも数多くのハマークリーンアップと修正が入っています。
アトミックオペレーションの戻り値の誤った解釈のためにgetpbuf *()で発生する可能性のあるハードロックを修正しました。
カーネルスタックを実行している可能性がある(ただし、野生では見つからない)10命令ウィンドウで発生するスタッキング割り込みを修正しました。特定のバッファキャッシュ操作では、TLBを無効化しないようにpmapに関連するIPIを半分にカットし、前の内容が無効であっても新しいPTEを入力するときは常にTLBを無効にします。これにより、パフォーマンスが向上し、問題のある最適化が削除され、デバッグが容易になります。
多数の困難なトリガSMPレースを修正します。特に、バルクビルドが引き起こす可能性のある異なるマウントポイントの同時マウントを実行することに関連するものがあります。 mountctlとumountの競合も修正してください。
スイッチパス内のアトミック操作の数を減らします。
極端な負荷の下でmount / umountアクティビティが多数発生する可能性のある、ネームキャッシュ競合/パニックを修正しました。
%ripサンプリングをrootに制限します。
スレッド化されたときにvfork()のgetpid()の問題を修正しました。特に、スレッド化されたプログラム内の並行vfork()は、間違ったPIDをexecの前に子のgetpid()によって返す可能性があります。
tsleep()が完全に設定される前にコールアウトタイマーがトリガーされると、珍しいスリープ/コールアウトレースを修正します。
コンソール上にnamecache stallメッセージをクリーンアップします。特に、関係するスレッドの適切な経過時間とtd_commを報告します。大量のRAMを搭載したシステムの起動時間を改善するために、メモリテストと初期ブートゼロをさらに減らします。
アイドルページゼロ化コードを完全に削除します。オンデマンドで最新のCPU上のページをゼロにすることは、多くの理由でより優れており、キャッシュ効果のために、ページ内のデータにアクセスするコンシューマーと組み合わせると実際にはより高速になることがあります。不要になったため、PG_ZEROを削除してください。 PG_ZEROを削除すると、クロスコンタミネーションの可能性のある別のソースを削除することで、カーネルのデバッグがさらに容易になります。
カーネルメモリ割り当てのためのCPUローカライズの実装とリファクタリングを完了します。 NUMAの意識と組み合わせる。これは、CPUローカライズされたまたは短命のカーネルデータ構造で機能します。 2つはVMページの色分けコードであったPQ_L2_SIZE抽象化で結合されています。このコードでは、CPUのローカライゼーションとNUMAの認識も処理するようになりました。
多くのvkernelの問題を修正し、vkernelのパフォーマンスを大幅に改善します。
プログラムが実行中のプログラムのパスを見つけるために使用するsysctl kern.proc.pathnameを更新します。このsysctlは、完全な正しいパスを返すために十分なデータを格納する前に実装されていました。
IntelのACPICAを同期します(これは通常の発生です)。memcpy()アセンブリABIを修正してください。アセンブリは元の(dst)引数を返していませんでした。 GCCがコード生成中にmemcpyを呼び出すことが時々あると、既知の問題を修正するのではなく、穴を閉じる。
多くの場合、-O2の警告とエラーを解決します。カーネルはデフォルトで-O2にコンパイルされました。
ACPIパス(バグのACPIコード)で不適切な歩留まりを回避する方法を追加してください。
保留中の信号によって間違った時間にトリガされる可能性のあるSTOP / CONTレースを修正しました。
スレッド化されたコアダンプは、同じプロセスの複数のスレッドが同時に同時にseg-faultになったときに、同じことに関連するロックアップを修正し、修正します。
uiomove_nofault()のバグのために発生するCAM / VMデッドロックを修正しました。このため、ページング/スワップの処理中に「不定期の待機バッファ」が発生する可能性があります。
紛失したIPIを検出して処理するコードを追加します。これは主に、いくつかの仮想ホストがIPIを失うことがあるvkernelsのためのものです。実際のCPUはIPIを失うものではありません。
clock_gettime()に対するさまざまな修正。
MPLOCKの多くの痕跡を取り除きます。すべてのクリティカルパスはこのロックから隔離されてからずっと古いですが、それを使用するクリティカルではない場所がいくつか残っています。低メモリプロセスのコードを再作成し、機能が動作しなくなる可能性のある多数のレースを修正します。
VMMとのシステムロックアップを修正し、VMXコードをリファクタリングします。
numvnodesがmaxvnodesに達したときにデッドロックを修正しました。また、 'df'またはファイルシステムの同期レースがumountのときに、小さなカーネルメモリリークを修正してください。また、maxvnodesの計算を控えめに減らしてください。たとえば、8GBのRAMを搭載したマシンでは、maxvnodesが598103ではなく478483に設定されます。
スピンロックを保持している間にuser_yield()が不適切に呼び出されたときにvm_object_page_remove()によってトリガされる珍しいパニックを修正し、次に降格することを決めました。
いくつかの動的に割り当てられたカーネル構造のサイズを減らす。特に、過剰なサイズのinodeハッシュテーブルの割り当てがより少なくなりました。主にUFS(DragonFlyBSDはあまり使用しません)に影響します。
AMD erratum 793の回避策を追加してください。
スタックされたcluster _ *()I / O呼び出しで発生するデッドロックを修正しました。
再帰的なモジュールのロードがデッドロックする可能性のあるバグを修正しました。
NFS sillyrenameコード(サーバー側NFS)に愚かなバグを修正しました。これにより、NFSサーバーのsillyrenameコードは、名前が変更されたばかりのファイルを決して削除しませんでした。どのように愚かな!high-ncpu + low-memory構成に対応して、より良い仕事をしてください。
共有スピンロックをリファクタリングして、複数のCPUが同時に共有スピンロックを取得したときに発生するスピンの量を減らします。
ネームキャッシュ操作をオーバーホールして、SMP競合をさらに低減します。これにより、多くのコアを搭載したシステムで、競合しない単一コンポーネントのパフォーマンスが少なくとも25倍向上し、vnodeおよびマウント構造のrefおよびunref操作が大幅に削減されます。
他の多くのカーネル構造を見直し、キャッシュのローカリティを改善し、キャッシュラインのバウンスを減らします。
SMBFSのファイル名変更コードにバグを修正しました。
プロセスごとにローカライズされたページングを強制する、プロセスごとのRSSリミッタRLIMIT_RSSを実装します。この機能を使用して、1つのプロセスが残りのマシンをハードケースにするのを防ぐことができます。
サポートされている最大スワップ領域を増やします。最大値は主にラムによって制限され、数十テラバイト(サポート管理構造に十分なRAMがある場合)になります。また、カーネルのKVMを128Gから511Gに増やしてください。動的なpmap削除を実装する(デフォルトでは無効)。これにより、pmapから中間ページテーブルのページとPDが即座に削除されます。メモリがプレミアムである場合には便利ですが、有効にすると、高速でメモリを割り当てたり割り当てを解除するプログラムの実行が遅くなることに注意してください。
ユーザーの「良い」レベルがどのように機能するかをリファクタリングして、選択されたnice値を従来よりも重要なものにします。
Matt Dillonが書いた、高性能ネイティブNVMEドライバをDragonFlyに追加しました。このドライバは、MSI-Xベクトルと、デバイスがサポートする使用可能なすべてのキュー、ロックなしまたは最小限のロック(ほとんどの場合、SMP競合なし)を使用したCPU単位のローカライゼーションを使用し、IOPSとスループットを狂わせることがあります。
グラフィックス:
BroadwellとSkylakeを安定させ、Linux 4.6に相当するDRMを提供します。
移植を容易にするLinux i2c APIを実装します。
ロックの順序の逆転など、いくつかの古いバグを修正しました。これは、ビデオ再生をストールアウトする可能性があります(Xの残りの部分)。
ユーザプロセスがdrmヘルパースレッドよりも高い優先度を持つことを許可したカーネルdrmスレッドの優先順位ミスを修正しました。これは、ブラウザで報告されたほとんどの一時的なビデオストールを修正します。EFIフレームバッファをDRMに渡して処理し、syscons VTスイッチングを改善し、関連するデッドロックを修正します。また、パニックが発生したときに、カーネルがXからコンソールVTにスイッチバックしようとしました。
ネットワーキング:
ボード全体で多くの改善。
iwm - 反転論理による問題を修正しました。パフォーマンスを大幅に向上させるその他多数の改良。
wlan - 非同期bgスキャンおよびその他の機能のサポートが追加されました。
その他のドライバ:
nvme - デフォルトのカーネルビルドに加えて、修正とパフォーマンスの向上。
mmcsd - 重要なeMMCサポートがDragonFlyに追加されました。
ahci - 破損したチップセット、特にポートマルチプライヤをサポートするために、いくつかの互換性の調整や追加された機能が追加されました。また、チップセットでサポートされている場合は、FBS(FIS-Based-Switching)を実装します。
TrackpointとElantechのサポートが追加されました。
ユーザーランド:
systatは、同じドライバに属する複数の割り込みを崩壊させるように強化されました。systat -vm 1は、より有益な情報を報告したり、フィールドが互いの中に入り込まないように展開したりするために、大幅に強化され改良されました。ブロックデバイスのマッチに 'nvme'を追加します。また、拡張vmstatsの表示を調整し、ozfodとnzfodの報告方法を変更します。
'vmstat 1'の出力がリファクタリングされました。 30年前に存在していた現代的な機械の高性能のために、すべてのフィールドはお互いに走っていました。
mount_nullおよびmount_tmpfs操作からの不要なmountlistスキャンおよびコマンドを減らすために、mount / mountdシグナリングを変更してください。 mount / umountの重い同時使用では本当に重要ですが、バルクビルドは実際にその状況を作り出します。
O_CLOEXECをアトミックな方法で使用しないため、libcがトリガできる多数のfork / exec *()リークを修正しました。 popen()やmk * stemp *()(mkostemp()とmkostemps()を追加)などの関数に、さまざまなO_CLOEXEC機能を追加します。スレッド環境で実行しているときに、popen()でファイル記述子のリークを修正しました。
新しいサブプロセスのlwpにvfork()を呼び出したTIDと同じTIDを与えることで、vfork()のpthreadsをより良くすることができます。これにより、pthreadを埋め込むことなく、vfork中にpthreadサポート関数を子プロセスで実行することができます。dports一括ビルドを改善するためのヘッダーに対する多くの互換性修正。
セキュリティ修正のためのいくつかのOpenSSLインポート。
ResSyncをOpenSSHに再同期させると、簡単に更新できます。
カーネルビルドにCFLAGSの代わりにKCFLAGSを使用させることで、カーネルCフラグを分離します。
多くの古いISAドライバをツリーから完全に削除します。 DragonFlyBSDは現在64ビットのみであるため、64ビットプラットフォーム上に存在しない古いドライバを削除することができます。
WORLD_CFLAGSとWORLD_CCOPTLEVELを導入します。デフォルトは-Oです。これにより、-O2など(WORLD_CCOPTLEVEL = 2など)自分の世界を簡単にコンパイルできます。しかし、3以上の使用はお勧めしません。有効な値は0,1,2,3、s、g、 'fast'です。
psがより読みやすくなるように、また適用されなくなった古いフラグを削除し、ちょうど混乱を招くように、psのSTATUSフォーマットを調整します。
小さい割り当てのためにmalloc()の整列を修正しました。 16行目から12バイト目までの割り当てでは、最小整列が16になりました。2のべき乗の割り当ては常に自然に調整されていますが、プログラムの中には '48'のように(例えば)16の倍数を使用するものもあります。 16バイトのアライメントを想定します。
Fortunesがリファクタリングされ、追加されました。powerd - 新しい-H lotemp:hightempオプションを使用してpowerdに温度ベースの管理を追加します。この機能は、冷却が不十分なラップトップやBIOSが過度に高い温度で意図的にスロットルを行う場合に非常に便利です。 Powerdは電源状態の変更(使用可能な周波数のリストを変更する可能性がある)を検出し、電源状態の変更が発生したときにサービスを適切に移行します。
多くのlibthread_xu / pthreadsは、dportsの互換性を改善するための修正と調整を行っています。
vkernelにコピーオンライト機能を追加する。たとえば、複数のvkernelsが、RAMに内部的にそれぞれCOW変更を加えることによって、単一のディスクイメージを使用できるようにします。
/ usr / src / secure rewired、libmdからlibcryptを削除しました。
ベースシステムでは、さまざまなツールがアップグレードされています。
コンパイラがGCC 5.4.1に更新されました。
我々は今LTOと金のリンカーを持っています。
binutils 2.25
少ない481。
OpenSSL / LibRESSLは完全に改良されました。 Baseはlibresslを使用するようになりました。
複数のタイムゾーンの更新。
ハンマーの状態:
その他の改善。このリリースに入っていないことの1つは、異なる多項式を使ってより高速なCRCアルゴリズムを使用するためのバージョンバンプでした。この作業は、テストが完了した後、MFCがリリースする予定です。ただし、リリースでは最も重大なパフォーマンス修正があるため(ファイルシステム書き込み用のcluster_write()コードの修正)、ユーザーはあまり心配しないでください。
ハンマー2ステータス:
開発は続けられますが、最初のリリースではまだ言い訳がありません。
クラン状態:
gcc 4.7に代わるDragonFlyの代替ベースコンパイラとしてclangを使用するための開始フレームワークが追加されました。それはまだ完全ではありません。もちろん、Clangはパッケージとして追加することができます。
64ビットステータス:
DragonFlyは4.6以降の64ビットのみのオペレーティングシステムであり、32ビットハードウェアでは動作しません。
AMD Ryzenのサポートはリリース中であり、新しいRyzenの開発が行われるにつれてさらなる作業がもたらされます。いくつかのcpu-reported-topologyの問題が修正され、MFCされます。現在AMDマイクロコードの更新を解決/再テストするのを待っている安定性の問題がいくつかあります。 Ryzenのユーザーは、私たちがその上にとどまっていることを保証することができます!
バージョン4.6.0の新機能:
mmcsd(4):disk_create()argsに入力ミスを修正しました。 > 1 SD / MMCカードにアクセスできます。
unzip(1)を追加します。もしあなたが 'それを打つことができないなら、彼らに参加する
マスタ・ワールドの構築能力を回復するリリース4.4
buildworld - マスターに構築されることを許可する
etc / rc.d - ディスクレス調整
カーネル - NFSにkqueueサポートを追加する(firefoxの問題をnfsで修正)
OpenSSL 1.0.1をインポートします。
OpenSSL 1.0.1のローカル調整。
ftp://ftp.iana.org/tz/releasesからtzdata2016bでzoneinfoデータベースを同期する
zic(8)/ zdump(8): '-05'のような略語については警告しないでください。
zic(8):最後にコミットした 'register'を削除します。
kernel / acpi_timer:タイマテストの後に欠けているcpu_enable_intr()を追加します。
em.4:i219のサポートについて言及してください。
ig_hal / em / emx:I219(Skylake)サポートを追加する
sys / vfs / hammer:ボリュームヘッダの消去に関する不具合を修正
sbin / hammer:16KB以上のHAMMERユーザー空間バッファにアクセスしない
sbin / hammer:ハンマーショーにobfuscateオプションを追加する
sys / vfs / hammer:ボリューム上のカーネルパニックに対する一時的な修正del
バージョン4.4.3 / 4.6.0 RC2の新機能:
mmcsd(4):disk_create()argsに入力ミスを修正しました。 > 1 SD / MMCカードにアクセスできます。
unzip(1)を追加します。もしあなたが 'それを打つことができないなら、彼らに参加する
マスタ・ワールドの構築能力を回復するリリース4.4
buildworld - マスターに構築されることを許可する
etc / rc.d - ディスクレス調整
カーネル - NFSにkqueueサポートを追加する(firefoxの問題をnfsで修正)
OpenSSL 1.0.1をインポートします。
OpenSSL 1.0.1のローカル調整。
ftp://ftp.iana.org/tz/releasesからtzdata2016bでzoneinfoデータベースを同期する
zic(8)/ zdump(8): '-05'のような略語については警告しないでください。
zic(8):最後にコミットした 'register'を削除します。
kernel / acpi_timer:タイマテストの後に欠けているcpu_enable_intr()を追加します。
em.4:i219のサポートについて言及してください。
ig_hal / em / emx:I219(Skylake)サポートを追加する
sys / vfs / hammer:ボリュームヘッダの消去に関する不具合を修正
sbin / hammer:16KB以上のHAMMERユーザー空間バッファにアクセスしない
sbin / hammer:ハンマーショーにobfuscateオプションを追加する
sys / vfs / hammer:ボリューム上のカーネルパニックに対する一時的な修正del
バージョン4.4.3の新機能:
mmcsd(4):disk_create()argsに入力ミスを修正しました。 > 1 SD / MMCカードにアクセスできます。
unzip(1)を追加します。もしあなたが 'それを打つことができないなら、彼らに参加する
マスタ・ワールドの構築能力を回復するリリース4.4
buildworld - マスターに構築されることを許可する
etc / rc.d - ディスクレス調整
カーネル - NFSにkqueueサポートを追加する(firefoxの問題をnfsで修正)
OpenSSL 1.0.1をインポートします。
OpenSSL 1.0.1のローカル調整。
ftp://ftp.iana.org/tz/releasesからtzdata2016bでzoneinfoデータベースを同期する
zic(8)/ zdump(8): '-05'のような略語については警告しないでください。
zic(8):最後にコミットした 'register'を削除します。
kernel / acpi_timer:タイマテストの後に欠けているcpu_enable_intr()を追加します。
em.4:i219のサポートについて言及してください。
ig_hal / em / emx:I219(Skylake)サポートを追加する
sys / vfs / hammer:ボリュームヘッダの消去に関する不具合を修正
sbin / hammer:16KB以上のHAMMERユーザー空間バッファにアクセスしない
sbin / hammer:ハンマーショーにobfuscateオプションを追加する
sys / vfs / hammer:ボリューム上のカーネルパニックに対する一時的な修正del
バージョン4.4.2の新機能:
virtio_blk:vtblk_requestの割り当てにcontigmalloc / contigfreeを使用します。drm / radeon:仮想ページではなくダミーページの物理アドレスが必要です
if_iwm:OpenBSDからいくつかの変更を適用するif_iwm.c rev 1.39 - > 1.42
if_iwm:if_iwnのように、構造体ファームウェアポインタを保存するだけです。
if_iwm:Linuxのiwlwifiソースファイル名を参照してコメントを削除します。
if_iwm:IEEE80211_ADDR_COPY()の使用を修正しました。
if_iwm:レート制御設定コードを修正します。
etc / rc.d:アップデートrtsold
i915 - コンソール/ Xレースを避けるためにアタッチ後に遅延を加える
カーネル - lwp_signotify()の待ち時間を短縮する
devfs - ルールが存在するときに余分なdevfsがマウントされたときのパニックを修正
ssh - 文書化されていないローミングサポートを削除するCVE-2016-0777 CVE-2016-0778
カーネル - xhci(usb)のクォークを追加
hammer - デバッグを取り除くkprintf
libc / stdtime:NULLポインタがfree()だった2つのケースを修正しました。
kernel / vga:間違ったlwkt_reltoken()を削除してください。この時点では撮影されていません。
libc / nls:でstr {error、signal}()メッセージを同期させます。
w(1):inet_addr()は失敗時にINADDR_NONEを返します。
ee(1):初期化されていない変数を修正します。
kernel:kern.dumpdev sysctlを修正しました。
OpenSSL 1.0.1rをインポートします。
OpenSSL 1.0.1rのローカル調整。
gcc50 / libconv_supc:cp-demangle.cにはHAVE_CONFIG_Hが必要です。
ftp://ftp.iana.org/tz/releasesからtzdata2016aでzoneinfoデータベースを同期する
make upgrade:廃止されたタイムゾーンを追加します。
igb:DMACRの設定を修正する
ifconfig:inet6アドレスの削除を修正する
バージョン4.4.1の新機能:
カーネル:CPUの省電力設定の改善
ファイル割り当ての削減/空き競合
キューの競合を減らす
実装されたlwp_setname(2)システムコール
固定dsp(4)非ブロッキング動作のサポート
有効なCPU周波数を表示するためにaperf(4)ドライバを追加する
HAMMERへの多数のクリーンアップと修正
ACPICAと20151124を同期させる
ほとんどの場合、i386(32ビット)ビットの削除が完了しました。
ブートローダのヒープを調整してより大きなMDイメージを扱う
死んだカーネルコードのクリーンアップパス(syslinkが残っているなど)
dschedが削除されました(バグの問題とSSDでうまく機能しません)
メモリ不足とメモリ不足のためのページャアルゴリズムを再コードする
グラフィックス:
drm / i915とdrm / radeonのドライバがLinuxカーネル3.18に適合
i915はValleyView / BaytrailとCherryview Atom SOCをサポートしています
Broadwell GPUは今や完全に加速されている
Skylakeサポートのための準備作業
システムコンソールはデフォルトでdrmグラフィックスをサポートするようになりました。 Xorgが起動され、kmsカーネルモジュールの1つがロードされると、仮想端末はもう黒い画面を表示しません。
電力管理の改善。 i915ハードウェアでパネルセルフリフレッシュが可能Radeonハードウェアでサポートされている温度センサー
ネットワーキング:
re(4)でのRealtek 8168Hのサポート
iwm(4)ドライバが追加されました
rtadvdが更新され、rtadvctlが追加されました
非同期UDP接続は、はるかに大きな負荷を処理する
高レイテンシ接続用の新しいより大きなTCP開始ウィンドウ
カーネルのnmbcluster値は、極端なトラフィックの場合、ライブ調整可能です。ネットワーキング:
安定したUNIXドメインソケット
Unixドメインソケット上のfd-passing用の新しいGCコード
FreeBSDとその他のIPv6の同期
TCPとUDPのsocket(2)パフォーマンスの改善
改善されたTCP接続(2)ローカルポート選択
accept(4)システムコールを追加
SOCK_CLOEXECおよびSOCK_NONBLOCK socket(2)およびaccept4(2)フラグのサポートが追加されました。
ifconfigでHWフロー制御機能を利用できるようにする
NFSROOTのiosizeとreadaheadを設定できるように調整パラメータを追加する
FreeBSDから拡張ipfwを入手する(DFlyでipfw3と呼ばれる)
その他のドライバ:
MIDIサポートが読み込まれました
デバイスマッパーの多くのバグ修正
dm-delayとdm-flakeyがデバイスマッパーに追加されました
USBモデムがうまく動作する(または少なくともカーネルをパニックしない)ラムECC機能とステータスへのアクセスの改善
FreeBSDから更新されたwlan(分割デバイスの削除直前まで)
ユーザーランド:
正規表現ライブラリは、マルチバイトで一般的にはるかに可能なTRE正規表現ライブラリに置き換えられています。それは機能のOSXと一致します。 (DFはMacOSの後でTREに移動する最初のBSDです)
libmをOpenBSDのバージョンに置き換えました(これは進行中の共同作業です)
libcには、リリース4.4で作成されたバイナリを将来的にDragonFlyで実行できるシンボルバージョン管理機能が追加されました。
照合の実装を含む、ロケールの完全なオーバーホールと更新。
malloc.h removed(このヘッダを削除する最初のBSDはFreeBSDです)
gcc50 libstdc ++が修正され、clangでC99関数を完全に使用できるようになりましたロケールの更新の結果、名前付きロケールが使用されている場合、ls(1)長い形式と-T形式の出力が変更されました。とりわけ、長い形式の月は常に英語で省略されている(したがってPOSIXの定義は高速で3文字の長さであることが保証されている)、年、時、秒の情報は常に表示される。 C / POSIXロケールでは、将来のタイムスタンプ処理以外のls(1)出力に変更はなく、POSIX標準要件に合わせて修正されました。
baseのWPA Supplicantを使用すると、ブート時にメッセージが表示されるため、10秒間の遅延が発生します。これは、DPortsバージョン(security / wpa_supplicant)を代わりに使用することを強く推奨します。
改善されたpowerd(8)
LWPとカーネルスレッドのtop(1)とps(1)出力の改善
pthread_set_name_np(3)のサポートを修正しました。
移植されたtcpdrop(8)アラブ首長国連邦(UAE、サウジアラビア、エジプト、ヨルダン、モロッコ、カタール)、追加スペイン語ロケール(メキシコ、アルゼンチン、コスタリカ)、追加の英語ロケール(フィリピン、シンガポール、香港)を含む多くの新しいロケールの追加、ノルウェースウェーデン語(フィンランド)、サミ(フィンランド、ノルウェー)、セルビア語はキリル語とラテン語の両方で表示されています。 ( 'locale -a'は完全なリストを提供します)。
FreeBSDからインポートされたrtadvc
ベースシステムでは、さまざまなツールがアップグレードされています。
nvi2がバージョン2.1.3にアップデートされました
libexecinfoが追加されました(FreeBSDから同期されました)
FreeBSDと同期したiconv
1.0.1qに更新されたopenssl
xは5.2.2に更新されました
libeditをバージョン2015-03-25に更新しました
binutilsを2.25.1にアップデート
grepが2.22に更新されました
tcshを6.19.00に更新しました
libdialogをv1.2-20150920に更新しました
(tn)ftpを'10 OCT 2015 'に更新しました
gccを5.2にアップデート
acpicaを20150717に更新
NetBSDから来たsort(1)は、FreeBSDのバージョンに置き換えられました
localedef(1)、Illumosの起源を持つ内部ツール
cldr2def、中止されたFreeBSDプロジェクトの起点を持つ内部ツールですが、DF用に拡張されましたベースシステムから削除されました:
hostapd(最新バージョンはdports:net / hostapdから入手可能)
mklocale(localedefに置き換えられました)
colldef(localedefに置き換えられました)
HAMMERの改良点:
Hammer1のクリーンアップと修正
その他の改善点:
DPortsは22,800個のポートをホバリングします。以前に壊れていたポートは、GitHubのPull Requestメカニズムによって提供されたため、通常のユーザーによって修正されています。 (ありがとう!)
DragonFly壁紙の6つの「公式」セットが、x11テーマ/トンボ壁紙(pkgはトンボ壁紙をインストールする)で利用できます。これらはKDEユーザ用に自動的にインストールされ、事前に選択され、XFCE4ユーザ用に自動的にインストールされますが、壁紙はまだそのデスクトップで手動で選択されています(少なくとも現在は)。共有/背景/トンボにシンボリックリンクされた共有/壁紙にインストールされます。
コメントが見つかりません