主頁 > 作業系統 > 【原創】有利于提高xenomai 實時性的一些配置建議

【原創】有利于提高xenomai 實時性的一些配置建議

2020-09-11 17:55:58 作業系統

著作權宣告:本文為本文為博主原創文章,轉載請注明出處,如有錯誤,歡迎指正,
@目錄

  • 一、影響因素
    • 1.硬體
    • 2.BISO(X86平臺)
    • 3.軟體
    • 4. 快取使用策略與GPU
  • 二、優化措施
    • 1. BIOS[x86]
    • 2. 硬體
    • 3. Linux
      • 3.1 Kernel CMDLINE
        • cpu隔離
        • Full Dynamic Tick
        • Offload RCU callback
        • 中斷隔離
        • 禁用irqbanlance
        • intel 核顯配置[x86]
        • nmi_watchdog[x86]
        • nosoftlockup
        • CPU特性[x86]
      • 3.2 內核構建配置
  • 三、實時性能測驗
  • 相關鏈接

本文講述一些有利于提高xenomai 實時性配置建議,其中,一些是通用的,一些是針對某個架構的,希望對你有用,

一、影響因素

硬實時作業系統應具備的最重要特性之一是可預測性,系統應該保證滿足所有關鍵時序約束,然而,這取決于一系列因素,這些因素涉及硬體的架構特征、內核中采用的機制和策略,以及用于實作應用程式的編程語言,

1.硬體

硬體方面,第一個影響調度可預測性的是處理器本身,處理器的內部特性是不確定性的第一個原因,例如指令預取、流水線操作、高速快取存盤器和直接存盤器訪問(DMA)機制,這些特性雖然改善了處理器的平均性能,但它們引入了非確定性因素,這些因素阻止了對最壞情況執行時間(WCET)的精確估計,

其他影響因素有記憶體、散熱,提升記憶體頻率可降低記憶體訪問延時;使用雙通道記憶體,這兩個記憶體CPU可分別尋址、讀取資料,從而使記憶體的帶寬增加一倍,資料存取速度也相應增加一倍(理論上),記憶體訪問延時得到縮短,進而提升系統的實時性能;處理器散熱設計不好,溫度過高時會引發CPU降頻保護,系統運行頻率降低影響實時性,熱設計應確保在高作業量時的溫度不會引發降頻,

對于X86 CPU,雙通道記憶體性能是單通道記憶體的2. 5倍以上;正確的熱設計可使實時性提升1.4倍以上,

2.BISO(X86平臺)

BISO需要針對實時系統進行配置,優化的BIOS設定與使用默認BISO設定的實時性能差距高達9倍,

3.軟體

  • 作業系統:調度演算法,同步機制,信號量型別,記憶體管理策略,通信語意和中斷處理,

  • 資源的分配隔離:分配CPU專門對實時任務服務、將多余中斷隔離到非實時任務CPU上,分配CPU專門對實時任務服務可使L1 、L2 Cache只為實時任務服務,

  • 實時任務的設計,良好的軟體設計能更好的發揮實時性能,

  • 其他,虛擬化、GUI等

4. 快取使用策略與GPU

  • CPU 里的 L1 Cache 或者 L2 Cache,訪問延時是記憶體的 1/15 乃至 1/100,想要追求極限性能,需要盡可能地多從 CPU Cache 里面拿資料,減少cache miss,上面的分配CPU專門對實時任務服務就是對非共享的L1 、L2 Cache的充分優化,對于L3 Cache,多個cpu核與GPU共享,無法避免非實時任務及GUI爭搶L3 Cache對實時任務的影響,為此intel 對Last Level Cache 推出了CAT(快取分配技術,Cache Alocation Technology),對最后一級快取(L3 Cache)實作磁區,用戶可以通過限制每個核心能夠向其中分配快取行的LLC數量,將LLC的部分分配給特定核心,使用該技術可以提升實時任務Cahe命中率,減少MSI延遲和抖動,進而提升實時性能,(不是所有intel處理器具有該功能,關于CAT 見github)

  • GPU,硬體上GPU與CPU共享L3 Cache ,因此GUI會影響實時任務的實時性,intel建議根據GUI任務的作業負載來固定GPU的運行頻率,且頻率盡可能低,減小GPU對實時任務實時性的影響,

二、優化措施

1. BIOS[x86]

Disable Features Intela Hyper-Threading Technology.
Intel SpeedStep.
Intel Speed Shift Technology
C-States: Gfx RC6.
GT PM Support.
PCH Cross Throttling.
PCI Express* Clock Gating.
Delay Enable DMI ASPM,DMI Link ASPM Control.
PCle *ASPM and SATA Aggressive LPM Support.
(For Skylake and Kaby Lake, also consider disabling Gfx Low Power Mode and USB Periodic SMl in BIOS.)
Enable Features Legacy lO Low Latency
Gfx Frequency Set to fixed value as low as possible according to proper workload
Memory Frequency SA GV Fixed High

2. 硬體

除處理器外,記憶體方面,使用雙通道記憶體,盡可能高的記憶體頻率,

散熱當面,針對處理器作業負載設計良好的散熱結構,

3. Linux

xenomai基于linux,xenomai作為一個小的實時核存在,許多硬體配置是linux 驅動掌管的,必須讓linux配置好,給xenomai提供一個好的硬體環境,讓xenomai充分發揮其RTOS的優勢,主要宗旨:盡可能的不讓linux影響xenomai,無論是軟體還是硬體

3.1 Kernel CMDLINE

cpu隔離

多核情況下將CPU隔離,設定內核引數isolcpus=[cpu串列] ,將串列中的CPU從內核SMP平衡和調度演算法中剔除,將剔除的CPU用于RT應用,如4核CPU平臺將第3、4核隔離來做RT應用,

CPU編號從"0"開始,串列的表示方法有三種:
numA,numB,...,numN
numA-numN
以及上述兩種表示方法的組合:
numA,...,numM-numN
例如:isolcpus=0,3,4-7表示隔離CPU0、3、4、5、6、7.

GRUB_CMDLINE_LINUX="isolcpus=2,3"

以上只是linux不會調度普通任務到CPU2和3上運行,這是基礎,此時還需要設定xenomai方面的CPU隔離,方法一,任務通過函式pthread_attr_setaffinity_np()設定xenomai任務只在CPU3和4上調度,隔離后的CPU的L1、L2快取命中率相應的也會得到提高,

cpu_set_t cpus;
CPU_ZERO(&cpus);
CPU_SET(2, &cpus);//將執行緒限制在指定的cpu2上運行
CPU_SET(3, &cpus);//將執行緒限制在指定的cpu3上運行
ret = pthread_attr_setaffinity_np(&tattr, sizeof(cpus), &cpus);

方法二,向xenomai設定內核引數supported_cpus,指定xenomai支持的CPU,xenomai任務會自動放到cpu2、cpu3上運行,

xenomai 內核引數supported_cpus與linux不同,supported_cpus是一個16進制數,每bit置位表示支持該CPU,要支持CPU2、CPU3,需要置置位bit2、bit3,即supported_cpus=0x06(00000110b),

GRUB_CMDLINE_LINUX="isolcpus=2,3 xenomai.supported_cpus=0x06"

注:linux內核引數isolcpus=CPU編號串列是基礎,否則若不隔離linux任務,后面的xenomai設定將沒任何意義,

Full Dynamic Tick

將CPU2、CPU3作為xenomai使用后,由于xenomai調度是完全基于優先級的調度器,并且我們已將linux任務從這兩個cpu上剔除,CPU上Tick也就沒啥用了,避免多余的Tick中斷影響實時任務的運行,需要將這兩個cpu配置為Full Dynamic Tick模式,即關閉tick,通過添加linux內核引數nohz_full=[cpu串列] 配置,

nohz_full=[cpu串列]在使用CONFIG_NO_HZ_FULL = y構建的內核中才生效,

GRUB_CMDLINE_LINUX="isolcpus=2,3 xenomai.supported_cpus=0x06 nohz_full=2,3"

為什么是linux內核引數呢?雙核下時間子系統中分析過,每個CPU的時鐘作業方式是linux初始化并配置作業模式的,xenomai最后只是接管而已,所以這里是通過linux內核引數配置,

注意:boot CPU(通常是0號CPU)會無條件的從串列中剔除,這是一個坑~

start_kerel()
 ->tick_init()
 	->tick_nohz_init()
void __init tick_nohz_init(void)
{
 .......
 cpu = smp_processor_id();
	
	if (cpumask_test_cpu(cpu, tick_nohz_full_mask)) {
		pr_warn("NO_HZ: Clearing %d from nohz_full range for timekeeping\n",
			cpu);
		cpumask_clear_cpu(cpu, tick_nohz_full_mask);
	}
 ......
}
Offload RCU callback

從引導選擇的CPU上卸載RCU回呼處理,使用內核執行緒 “rcuox / N”代替,通過linux內核引數rcu_nocbs=[cpu串列]指定的CPU串列設定,這對于HPC和實時作業負載很有用,這樣可以減少卸載RCU的CPU上作業系統抖動,

"rcuox / N",N表示CPU編號,‘x’:'b'是RCU-bh的b,'p'是RCU-preempt,‘s’是RCU-sched,

rcu_nocbs=[cpu串列]在使用CONFIG_RCU_NOCB_CPU=y構建的內核中才生效,除此之外需要設定RCU內核執行緒rcuc/nrcub/n執行緒的SCHED_FIFO優先級值RCU_KTHREAD_PRIO,RCU_KTHREAD_PRIO設定為高于最低優先級執行緒的優先級,也就是說至少要使該優先級低于xenomai實時應用的優先級,避免xenomai實時應用遷移到linux后,由于優先級低于RCU_KTHREAD的優先級而實時性受到影響,如下配置RCU_KTHREAD_PRIO=0,

General setup  --->
    RCU Subsystem  --->
        (0) Real-time priority to use for RCU worker threads
        [*] Offload RCU callback processing from boot-selected CPUs 
            (X) No build_forced no-CBs CPUs
            ( ) CPU 0 is a build_forced no-CBs CPU
            ( ) All CPUs are build_forced no-CBs CPUs
GRUB_CMDLINE_LINUX="isolcpus=2,3 xenomai.supported_cpus=0x06 nohz_full=2,3 rcu_nocbs=2,3"
中斷隔離

多核情況下,通過內核引數irqaffinity==[cpu串列],設定linux中斷的親和性,設定后,默認由這些cpu核來處理非CPU系結中斷,避免linux中斷影響cpu2、cpu3上的實時應用,將linux中斷指定到cpu0、cpu1處理,

GRUB_CMDLINE_LINUX="isolcpus=2,3 xenomai.supported_cpus=0x06 nohz_full=2,3 rcu_nocbs=2,3 irqaffinity=0,1"

以上只是設定linux中斷的affinity,只能使運行實時任務的CPU2、cpu3不會收到linux非CPU系結中斷請求,

要指定cpu來處理xenomai實時設備中斷,需要在實時驅動代碼中通過函式xnintr_affinity()設定,系結實時驅動中斷由CPU2、CPU3處理代碼如下,

    cpumask_t irq_affinity;
    ...
    cpumask_clear(&irq_affinity);
    cpumask_set_cpu(2, &irq_affinity);
    cpumask_set_cpu(3, &irq_affinity);
    ...
    if (!cpumask_empty(&irq_affinity)){
    	xnintr_affinity(&pIp->irq_handle,irq_affinity);	/*設定實時設備中斷的affinity*/
    }

雖然ipipe會保證xenomai 實時中斷在任何CPU都會優先處理,在實時設備中斷比較少的場合,我覺得把linux中斷與實時中斷分開比較好;如果實時設備中斷數量較多,如果隔離就會造成實時中斷間相互影響中斷處理的實時性,這時候不指定實時中斷處理CPU比較好,

禁用irqbanlance

irqbalance 用于優化中斷分配,它會自動收集系統資料以分析使用模式,并依據系統負載狀況將作業狀態置于 Performance mode 或 Power-save mode,簡單來說irqbalance 會將硬體中斷分配到各個CPU核心上處理,

  • 處于 Performance mode 時,irqbalance 會將中斷盡可能均勻地分發給各個 CPU core,以充分利用 CPU 多核,提升性能,
  • 處于 Power-save mode 時,irqbalance 會將中斷集中分配給第一個 CPU,以保證其它空閑 CPU 的睡眠時間,降低能耗,

禁用irqbanlance,避免不相干中斷發生在RT任務核,發行版不同,配置方式不同,以Ubuntu為例,停止/關閉開機啟動如下,

systemctl stop irqbalance.service
systemctl disable irqbalance.service

必要的話直接卸載irqbalance,

apt-get remove irqbalance

x86平臺還可添加引數acpi_irq_nobalance 禁用ACPI irqbalance.

GRUB_CMDLINE_LINUX="isolcpus=2,3 xenomai.supported_cpus=0x06 nohz_full=2,3 rcu_nocbs=2,3 irqaffinity=0,1 acpi_irq_nobalance noirqbalance"
intel 核顯配置[x86]

主要針對intel CPU的核顯,配置intel核顯驅動模塊i915,內核引數如下,

GRUB_CMDLINE_LINUX="i915.enable_rc6=0 i915.enable_dc=0 i915.disable_power_well=0  i915.enable_execlists=0 i915.powersave=0"
nmi_watchdog[x86]

NMI watchdog是Linux的開發者為了debugging而添加的特性,但也能用來檢測和恢復Linux kernel hang,現代多核x86體系都能支持NMI watchdog,

NMI(Non Maskable Interrupt)即不可屏蔽中斷,之所以要使用NMI,是因為NMI watchdog的監視目標是整個內核,而內核可能發生在關中斷同時陷入死回圈的錯誤,此時只有NMI能拯救它,

Linux中有兩種NMI watchdog,分別是I/O APIC watchdog(nmi_watchdog=1)和Local APIC watchdog(nmi_watchdog=2),它們的觸發機制不同,但觸發NMI之后的操作是幾乎一樣的,一旦開啟了I/O APIC watchdog(nmi_watchdog=1),那么每個CPU對應的Local APIC的LINT0線都關聯到NMI,這樣每個CPU將周期性地接到NMI,接到中斷的CPU立即處理NMI,用來悄悄監視系統的運行,如果系統正常,它啥事都不做,僅僅是更改 一些時間計數;如果系統不正常(默認5秒沒有任何普通外部中斷),那它就閑不住了,會立馬跳出來,且中止之前程式的運行,該出手時就出手,

避免周期中斷的NMI watchdog影響xenomai實時性需要關閉NMI watchdog,傳遞內核引數nmi_watchdog=0.

GRUB_CMDLINE_LINUX="isolcpus=2,3 xenomai.supported_cpus=0x06 nohz_full=2,3 rcu_nocbs=2,3 irqaffinity=0,1 acpi_irq_nobalance noirqbalance i915.enable_rc6=0 i915.enable_dc=0 i915.disable_power_well=0  i915.enable_execlists=0 i915.powersave=0 nmi_watchdog=0"
nosoftlockup

linux內核引數,禁用 soft-lockup檢測器,

GRUB_CMDLINE_LINUX="isolcpus=2,3 xenomai.supported_cpus=0x06 nohz_full=2,3 rcu_nocbs=2,3 irqaffinity=0,1 acpi_irq_nobalance noirqbalance i915.enable_rc6=0 i915.enable_dc=0 i915.disable_power_well=0  i915.enable_execlists=0 i915.powersave=0 nmi_watchdog=0 nosoftlockup"
CPU特性[x86]

intel處理器相關內核引數:

  • nosmap
  • nohalt,告訴內核在空閑時,不要使用省電功能PAL_HALT_LIGHT, 這增加了功耗,但它減少了中斷喚醒延遲,這可以提高某些環境下的性能,例如聯網服務器或實時系統,
  • mce=ignore_ce,忽略machine checkerrors (MCE).
  • idle=poll,不要使用HLT在空閑回圈中進行節電,而是輪詢以重新安排事件, 這將使CPU消耗更多的功率,但對于在多處理器基準測驗中獲得稍微更好的性能可能很有用, 它還使使用性能計數器的某些性能分析更加準確,
  • clocksource=tsc tsc=reliable,指定tsc作為系統clocksource.
  • intel_idle.max_cstate=0 禁用intel_idle并回退到acpi_idle.
  • processor.max_cstate=0 intel.max_cstate=0 processor_idle.max_cstate=0 限制睡眠狀態c-state,
GRUB_CMDLINE_LINUX="isolcpus=2,3 xenomai.supported_cpus=0x06 nohz_full=2,3 rcu_nocbs=2,3 irqaffinity=0,1 acpi_irq_nobalance noirqbalance i915.enable_rc6=0 i915.enable_dc=0 i915.disable_power_well=0  i915.enable_execlists=0 i915.powersave=0 nmi_watchdog=0 nosoftlockup processor.max_cstate=0 intel.max_cstate=0 processor_idle.max_cstate=0     intel_idle.max_cstate=0 clocksource=tsc tsc=reliable nmi_watchdog=0 nosoftlockup intel_pstate=disable idle=poll nohalt nosmap  mce=ignore_ce"

3.2 內核構建配置

系統構建時,除以上提到的配置外(CONFIG_NO_HZ_FULL = y、CONFIG_RCU_NOCB_CPU=y、RCU_KTHREAD_PRIO=0),其他實時性相關配置如下:

CONFIG_MIGRATION=n、CONFIG_MCORE2=y[x86]、CONFIG_PREEMPT=y、ACPI_PROCESSOR =n[x86]、CONFIG_CPU_FREQ =n、CONFIG_CPU_IDLE =n;

經過以上配置后可以使用latency測驗,觀察配置前后的變化,關于latency,需要注意的是,測驗timer-IRQ的latency時,即用latency -t2命令來測驗時,xenomai默認使用cpu0的timer,上面提到boot CPU(通常是0號CPU)會無條件的從nohz_full=[cpu串列]串列中剔除,所以latency -t2測驗時你會發現沒什么變化,還可能會變差了(最壞情況差不多一致,平均值變大了),另外我們將linux中斷affinity全都設定為CPU0處理,這些中斷或多或少也會影響timer-IRQ的latency,

三、實時性能測驗

筆者對以上各個條件配置前后對比過實時性改善效果,均有不同程度的優化效果,在此就不一一貼出前后對比圖了,大家有興趣可自行測驗,

下面直接給出最終的應用空間任務Jitter測驗結果,使用的環境如下:

CPU intel 賽揚 [email protected]
Kernel Linux 4.4.200
作業系統 Ubuntu 16.04
記憶體 8GB DDR3-1600 雙通道
存盤 64GB EMMC

測驗條件:在stress壓力下測驗,同時一個QT應用程式繪制2維曲線圖,QT CPU占用率99%,

stress -c 10 -m 4

測驗時間:211:04:55
測驗命令:

latency -t0 -p 100 -P 99 -h -g result.txt 

測驗應用空間程式,優先級99,任務周期100us,測驗結果輸出到檔案result.txt,經過接近10天的測驗后,檔案result.txt中latency分布結果如下:

# 211:04:55 (periodic user-mode task, 100 us period, priority 99)
# ----lat min|----lat avg|----lat max|-overrun|---msw|
#       0.343|      1.078|     23.110|       0|     0|
# Xenomai version: Xenomai/cobalt v3.1
# Linux 4.4.200-xeno 
......
# I-pipe releagese #20 detected
# Cobalt core 3.1 detected
# Compiler: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 
# Build args: --enable-smp --enable-pshared --enable-tls 
PKG_CONFIG_PATH=:/usr/xenomai/lib/pkgconfig:/usr/xenomai/lib/pkgconfig0 1
0.5 1599357037
1.5 1621130106
2.5 56618753
3.5 4386985
4.5 3848531
5.5 3556704
6.5 3353649
7.5 3033218
8.5 2560133
9.5 2035075
10.5 1516866
11.5 1038989
12.5 680815
13.5 417124
14.5 224296
15.5 115165
16.5 58075
17.5 27669
18.5 11648
19.5 4648
20.5 1646
21.5 467
22.5 38
23.5 1

其中第一列資料表示latency的值,第二串列示該值與上一個值之間這個范圍的latency出現的次數,最小0.343us,平均latency 1.078us,最大23.110us,可見xenomai的實時性還是挺不錯的,
以上只是xenomai應用空間任務的實時性表現,如果使用內核空間任務會更好,當然這只能說明作業系統能提供的實時性能,具體的還要看應用程式的設計等,
此外,該測驗基于X86平臺,X86處理器的實時性與BIOS有很大關系,通常BIOS配置CPU具有更高的吞吐量,例如超執行緒、電源管理、CPU頻率等,畢竟BIOS不是普通開發者能接觸到的,如果能讓BIOS對CPU針對實時系統配置的話,實時性會更好,

相關鏈接

https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/cache-allocation-technology-white-paper.pdf

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/6496.html

標籤:嵌入式

上一篇:《痞子衡嵌入式半月刊》 第 6 期

下一篇:此Flash Player 與您的地區不相容,請重新安裝Adobe Flash Player問題解決

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more