精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux 內(nèi)存調(diào)優(yōu)之如何限制進程、系統(tǒng)級別內(nèi)存資源

系統(tǒng) Linux
Cgroup(Control Groups)?最早由 google 開發(fā),后來內(nèi)置到了 Linux 內(nèi)核中,是Linux kernel(Linux內(nèi)核)的一項功能,目前是很多虛擬化容器技術(shù)的底層核心技術(shù)。

限制內(nèi)存使用量

今天和小伙伴分享一些Linux 內(nèi)存限制相關(guān)知識,主要涉及如何配置以及什么情況下需要配置,我們知道內(nèi)存屬于不可壓縮資源,當(dāng)沒有那么多的物理內(nèi)存可以映射,進程都無法啟動,所以為了公平,亦或是考慮部分進程 Qos 級別,一般情況下會對進程進行內(nèi)存限制,即保證機器上的多個進程不會因為業(yè)務(wù)對基礎(chǔ)資源的彈性要求,相互影響,比如類似FTP進程的內(nèi)存泄露問題影響到核心業(yè)務(wù)服務(wù)觸發(fā) OOM ,甚至直接被OOM killer 掉。

簡單介紹,關(guān)于內(nèi)存資源限制在 Linux 中,一般按照限制手段來劃分的話,分為

  • 內(nèi)核參數(shù)(包括啟動配置)限制: 臨時修改交換分區(qū)頻率sysctl -w vm.swappiness=10, 啟動引導(dǎo)配置大頁參數(shù)grubby --update-kernel=ALL --args="hugepagesz=1G hugepages=10"。
  • Cgroup(包括systemd)限制: 通過 Cgroup 的 memory 子系統(tǒng)限制 /sys/fs/cgroup/memory/myapp/memory.limit_in_bytes,MemoryMax=1G。
  • ulimit 限制: ulimit -v 2097152。

三種方式,按照限制類型劃分,一般分為:

  • 系統(tǒng)內(nèi)存限制: 比如修改內(nèi)核參數(shù)sysctl -w vm.overcommit_memory=2  禁止過度分配虛擬內(nèi)存。
  • 進程內(nèi)存限制: Systemd 單元限制進程物理內(nèi)存不超過 1G MemoryMax=1G。
  • 用戶會話內(nèi)存限制: echo "john hard as 2097152" >> /etc/security/limits.conf 限制用戶 john 的進程最大虛擬內(nèi)存(地址空間)為 2 GB。

如果按照具體的內(nèi)存種類劃分,可以分為:

  • 物理、虛擬內(nèi)存限制: 硬限制物理內(nèi)存大小 memory.limit_in_bytes, 會話級別虛擬內(nèi)存限制 ulimit -v。
  • 數(shù)據(jù)段,數(shù)據(jù)棧限制: ulimit -d 262144 設(shè)置數(shù)據(jù)段的最大值。
  • 數(shù)據(jù)緩存區(qū): 釋放內(nèi)存緩存區(qū)設(shè)置 vm.drop_caches,網(wǎng)絡(luò)IO 相關(guān)緩存區(qū)配置 net.ipv4.tcp_rmem。
  • 大頁,臟頁相關(guān)內(nèi)存頁限制:大頁大小 vm.nr_hugepages。

Cgroup

Cgroup(Control Groups)最早由 google 開發(fā),后來內(nèi)置到了 Linux 內(nèi)核中,是Linux kernel(Linux內(nèi)核)的一項功能,目前是很多虛擬化容器技術(shù)的底層核心技術(shù)。

在一個系統(tǒng)中運行的層級制進程組,Cgroup 可對其進行資源分配(如CPU時間、系統(tǒng)內(nèi)存、網(wǎng)絡(luò)帶寬或者這些資源的組合)。

通過使用cgroup ,系統(tǒng)管理員在分配、排序、拒絕、管理和監(jiān)控系統(tǒng)資源等方面,可以進行精細化控制。硬件資源可以在應(yīng)用程序和用戶間智能分配,從而增加整體效率。

Cgroup可對進程進行層級式分組并標記,并對其可用資源進行限制。通過將cgroup層級系統(tǒng)與systemd單位樹捆綁, Linux 可以把資源管理設(shè)置從進程級別移至應(yīng)用程序級別。

可以使用systemctl指令,或者通過修改systemd單位文件來管理系統(tǒng)資源。

為了控制重要的內(nèi)核資源,systemd 會自動掛載/sys/fs/cgroup 目錄實現(xiàn) cgroup 分層架構(gòu),Linux 內(nèi)核的資源管理器,也叫 CGroup 子系統(tǒng),代表某一種單一資源(如 CPU 時間或內(nèi)存等。

Linux 內(nèi)核提供了一系列資源管理器,由 systemd 自動掛載。如果需要查看已經(jīng)掛載的資源管理器列表,可以參考/proc/cgroups。

內(nèi)存子系統(tǒng)位于其中:

memory: 對 cgroup 中的任務(wù)使用內(nèi)存量進行限制,并且自動生成任務(wù)占用內(nèi)存資源的報告。

在安裝了 kernel-doc 軟件包后,可以在/usr/share/doc/kernel-doc-<version>/Documentation/cgroup 目錄下找相關(guān)管理器的說明文檔,從而配置合適的資源限制。

┌──[root@liruilongs.github.io]-[/usr/share/doc/kernel-doc-4.18.0/Documentation/cgroup-v1]
└─$ls
00-INDEX              cgroups.txt  cpusets.txt  freezer-subsystem.txt  memcg_test.txt  net_cls.txt   pids.txt
blkio-controller.txt  cpuacct.txt  devices.txt  hugetlb.txt            memory.txt      net_prio.txt  rdma.txt
┌──[root@liruilongs.github.io]-[/usr/share/doc/kernel-doc-4.18.0/Documentation/cgroup-v1]
└─$ll
total 184
。。。。。。。。。。。。。。。。
-r--r--r--. 1 root root  8480 Mar 27  2020 memcg_test.txt
-r--r--r--. 1 root root 37743 Mar 27  2020 memory.txt
................

簡單的信息可以通過索引文件的了解。

┌──[root@liruilongs.github.io]-[/usr/share/doc/kernel-doc-4.18.0/Documentation/cgroup-v1]
└─$cat 00-INDEX
。。。。。。。
memcg_test.txt
        - Memory Resource Controller; implementation details.
memory.txt
        - Memory Resource Controller; design, accounting, interface, testing.
。。。。。。。。。。。。。。。。。。。。。
┌──[root@liruilongs.github.io]-[/usr/share/doc/kernel-doc-4.18.0/Documentation/cgroup-v1]
└─$

Cgroup 限制內(nèi)存資源常見的有兩種,一種是 通過 systemd,一種是直接通過 cgroup 文件系統(tǒng)進行配置,這里我們先介紹通過 systemd 的方式配置,因為這種方式比較簡單,而且可以做到進程級別的配置,而通過 cgroup 的方式,可以做到系統(tǒng)級別的配置,前提是當(dāng)前Linux 機器使用 systemd,并且所有啟動進程納管到了 cgroup 子樹,那么可以通過限制頂層樹的資源限制,來實現(xiàn)整個系統(tǒng)的資源限制。

在 systemd 的 drop-in 文件文件[Service]段里面定義 MemoryLimit 值就可以限制你的程序所使用的內(nèi)存,單位可以是K,M,G或T。

這里看一個以臨時服務(wù)的方式運行 /bin/bash命令的Demo ,對 內(nèi)存和CPU 進行限制, 并將其標準輸入、標準輸出、標準錯誤連接到當(dāng)前的 TTY 設(shè)備上:

┌──[root@liruilongs.github.io]-[~]
└─$ systemd-run  -p  MemoryLimit=5M  -p CPUShares=100 --unit=bash-limit   --slice=bash-test -t /bin/bash
Running as unit bash-limit.service.
Press ^] three times within 1s to disconnect TTY.

在生成的 bash Service 中我們可以運行交互命令,查看當(dāng)前 Service 的單元文件,MemoryLimit=5242880 ,即限制內(nèi)存使用量 5M。

┌──[root@liruilongs.github.io]-[/]
└─$ systemctl cat bash-limit.service
# /run/systemd/system/bash-limit.service
# Transient stub

# /run/systemd/system/bash-limit.service.d/50-CPUShares.conf
[Service]
CPUShares=100
# /run/systemd/system/bash-limit.service.d/50-Description.conf
[Unit]
Description=/bin/bash
# /run/systemd/system/bash-limit.service.d/50-Environment.conf
[Service]
Environment="TERM=xterm-256color"
# /run/systemd/system/bash-limit.service.d/50-ExecStart.conf
[Service]
ExecStart=
ExecStart=@/bin/bash "/bin/bash"
# /run/systemd/system/bash-limit.service.d/50-MemoryLimit.conf
[Service]
MemoryLimit=5242880
# /run/systemd/system/bash-limit.service.d/50-Slice.conf
。。。。。。。。。。。。。。。。。。。。。。。。

通過 systemctl status bash-limit.service 我們可以看到cgroup的相關(guān)信息。

┌──[root@liruilongs.github.io]-[/]
└─$ systemctl status bash-limit.service
● bash-limit.service - /bin/bash
   Loaded: loaded (/run/systemd/system/bash-limit.service; static; vendor preset: disabled)
  Drop-In: /run/systemd/system/bash-limit.service.d
           └─50-CPUShares.conf, 50-Description.conf, 50-Environment.conf, 50-ExecStart.conf, 50-MemoryLimit.conf, 50-Slice.conf, 50-StandardError.conf, 50-StandardInput.conf, 50-StandardOutput.conf, 50-TTYPath.conf
   Active: active (running) since 六 2022-10-29 13:40:19 CST; 31s ago
 Main PID: 136529 (bash)
   Memory: 1.7M (limit: 5.0M)
   CGroup: /bash.slice/bash-test.slice/bash-limit.service
           ├─136529 /bin/bash
           └─136607 systemctl status bash-limit.service

10月 29 13:40:19 liruilongs.github.io systemd[1]: Started /bin/bash.
┌──[root@liruilongs.github.io]-[/]
└─$ bash
┌──[root@liruilongs.github.io]-[/]
└─$ bash

bash-limit.service 這個 service  的上級子樹為 bash.slice 這個分組。

Memory: 1.7M (limit: 5.0M)
   CGroup: /bash.slice/bash-test.slice/bash-limit.service
           ├─136529 /bin/bash
           └─136607 systemctl status bash-limit.service

當(dāng)然上面的配置方式實際上是基于 Cgroup 來實現(xiàn)的,Cgroup V1 版本和 V2 版本有些區(qū)別,當(dāng)前機器環(huán)境的問題,我們只看一下 V1 的版本,MemoryLimit 參數(shù)可以控制Cgroup 內(nèi)存控制器的 memory.limit_in_bytes Cgroup參數(shù)。

對于運行中的 service 可以直接通過set-property 的方式來修改。

# 如需使用命令列來限定 httpd.service 的 CPU 和內(nèi)存占用量,請輸入:
systemctl set-property httpd.service CPUShares=600 MemoryLimit=500M

下面為 system.slice 這個 Cgroup 分組下面 tuned Cgroup 內(nèi)存相關(guān)資源限制,可以看到默認的情況下沒有限制(memory.limit_in_bytes ),使用的最大值,這里的內(nèi)存限制是物理內(nèi)存,不是虛擬內(nèi)存。

tuned 小伙伴們應(yīng)該不陌生,一個開源的系統(tǒng)性能優(yōu)化的服務(wù),用于一些內(nèi)核參數(shù)限制。

┌──[root@liruilongs.github.io]-[/sys/fs/cgroup/memory/system.slice] 
└─$cat tuned.service/memory.
memory.events                       memory.kmem.tcp.failcnt             memory.memsw.failcnt                memory.qos_level
memory.events.local                 memory.kmem.tcp.limit_in_bytes      memory.memsw.limit_in_bytes         memory.soft_limit_in_bytes
memory.failcnt                      memory.kmem.tcp.max_usage_in_bytes  memory.memsw.max_usage_in_bytes     memory.stat
memory.force_empty                  memory.kmem.tcp.usage_in_bytes      memory.memsw.usage_in_bytes         memory.swappiness
memory.high                         memory.kmem.usage_in_bytes          memory.min                          memory.usage_in_bytes
memory.kmem.failcnt                 memory.limit_in_bytes               memory.move_charge_at_immigrate     memory.use_hierarchy
memory.kmem.limit_in_bytes          memory.low                          memory.numa_stat                    
memory.kmem.max_usage_in_bytes      memory.max_usage_in_bytes           memory.oom_control                  
memory.kmem.slabinfo                memory.memfs_files_info             memory.pressure_level

默認情況下,沒有限制會顯示最大值。

┌──[root@liruilongs.github.io]-[/sys/fs/cgroup/memory/system.slice] 
└─$cat tuned.service/memory.limit_in_bytes 
9223372036854771712

配置方式我們可以通過上面的方式配置,通過 service unit 文件進行限制。

限定最大可用內(nèi)存為 1GB,添加 MemoryLimit 設(shè)定。

┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] 
└─$vim tuned.service

確認配置,加載配置文件,重啟。

┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] 
└─$systemctl cat tuned.service
# /usr/lib/systemd/system/tuned.service
[Unit]
Description=Dynamic System Tuning Daemon
After=systemd-sysctl.service network.target dbus.service
Requires=dbus.service polkit.service
Conflicts=cpupower.service auto-cpufreq.service tlp.service power-profiles-daemon.service
Documentation=man:tuned(8) man:tuned.conf(5) man:tuned-adm(8)

[Service]
Type=dbus
MemoryLimit=1G
PIDFile=/run/tuned/tuned.pid
BusName=com.redhat.tuned
ExecStart=/usr/sbin/tuned -l -P
Restart=on-failure

[Install]
WantedBy=multi-user.target
┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] 
└─$systemctl daemon-reload
┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] 
└─$systemctl restart tuned.service

再次查看 Cgroup 內(nèi)存相關(guān)限制參數(shù)。

┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] 
└─$cat  /sys/fs/cgroup/memory/system.slice/tuned.service/memory.limit_in_bytes 
1073741824
┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] 
└─$

生產(chǎn)環(huán)境,更多的是通過  drop-in  的方式定義文件。

┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] 
└─$vim  tuned.service.d/50-MemoryLimit.conf
┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] 
└─$systemctl daemon-reload
┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] 
└─$systemctl restart tuned.service
┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] 
└─$systemctl cat tuned.service
# /usr/lib/systemd/system/tuned.service
[Unit]
Description=Dynamic System Tuning Daemon
After=systemd-sysctl.service network.target dbus.service
Requires=dbus.service polkit.service
Conflicts=cpupower.service auto-cpufreq.service tlp.service power-profiles-daemon.service
Documentation=man:tuned(8) man:tuned.conf(5) man:tuned-adm(8)

[Service]
Type=dbus
PIDFile=/run/tuned/tuned.pid
BusName=com.redhat.tuned
ExecStart=/usr/sbin/tuned -l -P
Restart=on-failure

[Install]
WantedBy=multi-user.target

# /usr/lib/systemd/system/tuned.service.d/50-MemoryLimit.conf
[Service]
MemoryLimit=1G
┌──[root@liruilongs.github.io]-[/usr/lib/systemd/system] 
└─$

這里我們簡單看一下,其他的 Cgroup 參數(shù)限制,部分參數(shù)在 Cgroup V2 中作了調(diào)整,感興趣小伙伴可以看看去。

核心內(nèi)存限制

參數(shù)

作用

memory.limit_in_bytes

物理內(nèi)存硬限制

(單位:字節(jié)),超出會觸發(fā) OOM Killer。

memory.memsw.limit_in_bytes

物理內(nèi)存 + swap 總限制

(需內(nèi)核啟用 swapaccount=1)。

memory.soft_limit_in_bytes

內(nèi)存軟限制

,系統(tǒng)優(yōu)先回收超過此值的內(nèi)存,但不會強制殺死進程。

內(nèi)核內(nèi)存控制

參數(shù)

作用

memory.kmem.limit_in_bytes

內(nèi)核內(nèi)存(如 slab、dentry 緩存)的硬限制

memory.kmem.tcp.limit_in_bytes

TCP 緩沖區(qū)內(nèi)存的硬限制

(如 TCP socket 發(fā)送/接收緩沖區(qū))。

內(nèi)存回收與行為控制

參數(shù)

作用

memory.force_empty

強制釋放內(nèi)存緩存

(寫入 0 觸發(fā))。

memory.swappiness

調(diào)整內(nèi)存回收策略

(值越高,系統(tǒng)越積極使用 swap)。

memory.oom_control

控制 OOM Killer 行為

0 表示啟用 OOM Killer,1 表示禁用)。

memory.move_charge_at_immigrate

進程遷移時是否轉(zhuǎn)移內(nèi)存占用

1 表示轉(zhuǎn)移)。

高級功能

參數(shù)

作用

memory.high

內(nèi)存使用軟限制

(v1 中較少使用,v2 中更常見)。

memory.low

內(nèi)存保護閾值

,系統(tǒng)盡量避免回收低于此值的內(nèi)存。

memory.pressure_level

內(nèi)存壓力事件通知

(需配合 cgroup.event_control 使用)。

對于這部分參數(shù)的配置,可以直接找到對應(yīng)的 Cgroup 文件進行修改。

# 限制 TCP 緩沖區(qū)為 100MB
echo "100M" > memory.kmem.tcp.limit_in_bytes

ulimit

對于多用戶的系統(tǒng)不限制資源本身可能就是一種不公平, 限制系統(tǒng)資源比較老的方式是使用 ulimit,由 PAM 模塊在登錄和會話啟動時強制實施,ulimit 命令是bash 內(nèi)置命令,主要限制了 shell 及其子進程可用的資源。

在/etc/pam.d/system-auth 文件中調(diào)用了 pam_limits 模塊,此模塊讀取 /etc/security/limits.conf 和/etc/security/limits.d/,按配置文件設(shè)置資源限制。 查看模塊幫助文檔 man pam limits。

/etc/pam.d/system-auth 是什么?

/etc/pam.d/system-auth 是一個 PAM(Pluggable Authentication Modules)配置文件。在 Linux 系統(tǒng)中,PAM 提供了一種靈活的方式來配置用戶認證、授權(quán)和會話管理。

該文件是一個包含 PAM 配置行的文本文件,用于定義不同的認證、授權(quán)和會話模塊及其參數(shù)。PAM 模塊負責(zé)處理用戶登錄、密碼驗證、權(quán)限檢查等操作。

查看文件中資源限制相關(guān)的模塊,有時候我們做一些基線整改,可能需要修改該文件的相關(guān)配置。

┌──[root@liruilongs.github.io]-[~]
└─$cat /etc/pam.d/system-auth  | grep pam_limits
session     required                                     pam_limits.so
┌──[root@liruilongs.github.io]-[~]
└─$

在PAM配置中,pam_limits.so 模塊被要求進行會話限制。

PAM(Pluggable Authentication Modules)是一個用于對用戶進行認證的系統(tǒng)級框架。pam_limits.so 模塊是 PAM 框架的一部分,它用于設(shè)置會話級別的資源限制,例如進程可打開的文件數(shù)、進程可使用的內(nèi)存等。

ulimit 命令是用于限制用戶級別資源的工具,它通常用于控制 shell 進程及其子進程的資源使用。修改 ulimit 值只會對當(dāng)前 shell 會話有效,對其他用戶或系統(tǒng)進程不會產(chǎn)生影響(不一定)。

通過 ulimit 是限制系統(tǒng)資源的一種途徑,ulimit 支持 hard 和 soft 限制。

#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open file descriptors
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority

普通用戶可以設(shè)置自己的軟限制,但不能高于硬限制。可以使用 ulimit -a 查看資源限制列表。

軟限制 (soft maxlogins):軟限制是一個警告閾值,當(dāng)達到或超過該限制時,系統(tǒng)會發(fā)出警告信息,但不會阻止用戶登錄。硬限制 (hard maxlogins):硬限制是一個嚴格的限制,當(dāng)達到或超過該限制時,系統(tǒng)將阻止用戶登錄。

┌──[root@liruilongs.github.io]-[~]
└─$ulimit -Hn #限制數(shù)
262144
┌──[root@liruilongs.github.io]-[~]
└─$ulimit -Sn #限制數(shù)
1024
┌──[root@liruilongs.github.io]-[~]
└─$

當(dāng)指定限制數(shù)時限制,不指定時輸出當(dāng)前設(shè)置。

通過配置文件的方式對登錄次數(shù)進行限制,配置 kiosk 組 在多個終端中只能同時登錄 2 次。

┌──[root@liruilongs.github.io]-[~]
└─$cat /etc/security/limits.conf | grep -v ^# | grep -v ^$
@kiosk soft maxlogins 2
@kiosk hard maxlogins 2
┌──[root@liruilongs.github.io]-[~]
└─$

涉及到內(nèi)存相關(guān)的資源限制:

  • memlock:最大鎖定內(nèi)存地址空間限制(以 KB 為單位)
  • rss:最大常駐集大小限制(以 KB 為單位)物理內(nèi)存
  • stack:最大堆棧大小限制(以 KB 為單位)
  • as:地址空間限制(以 KB 為單位)虛擬內(nèi)存
  • msgqueue:POSIX 消息隊列使用的最大內(nèi)存限制(以字節(jié)為單位)

配置虛擬內(nèi)存限制可以通過 ulimit 進行會話基本的虛擬內(nèi)存設(shè)置,下面是一個 Demo,僅對 當(dāng)前 Shell 及其子進程 生效 as 虛擬地址空間限制,以 KB 為單位。

┌──[root@liruilongs.github.io]-[~]
└─$ulimit -v 8186 # 配置 當(dāng)前 ulimit 大小為 8MB
┌──[root@liruilongs.github.io]-[~]
└─$ls
ls: error while loading shared libraries: libc.so.6: failed to map segment from shared object

修改 as 的大小之后,提示 ls 命令無法加載共享庫 libc.so.6,并且無法從共享對象映射段。

永久配置(全局或用戶級)需要修改 /etc/security/limits.conf, 感興趣小伙伴可以看看我之前的博文,生效條件:用戶重新登錄后生效。

# 格式:<domain>  <type>  <item>  <value>
liruilong  hard  as      819200   # Hard Limit 800MB
liruilong  soft  as      409600   # Soft Limit 400MB

其他的一些限制項,也可以通過上面的方式進行,比如內(nèi)存鎖定,最大棧,數(shù)據(jù)段等內(nèi)存相關(guān)的限制。

內(nèi)核參數(shù)

通過內(nèi)核參數(shù)對內(nèi)存的限制主要是一些緩存區(qū)的內(nèi)存占用限制,以及部分 OOM 和 內(nèi)存使用策略的修改,內(nèi)存頁分配限制策略等。

這里關(guān)于怎么修改內(nèi)核參數(shù)以及內(nèi)核參數(shù)的加載方式,可以參考我之前的博文,這里就不再贅述了。

緩存區(qū)內(nèi)存限制

下面為通過關(guān)鍵字過濾部分的內(nèi)核參數(shù)。

[root@developer ~]# sysctl -a | grep mem
kernel.bind_memcg_blkcg_enable = 1
net.core.optmem_max = 81920
net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.core.wmem_default = 212992
net.core.wmem_max = 212992
net.ipv4.fib_sync_mem = 524288
net.ipv4.igmp_max_memberships = 20
net.ipv4.tcp_mem = 78777105039157554
net.ipv4.tcp_rmem = 40961310726291456
net.ipv4.tcp_wmem = 4096163844194304
net.ipv4.udp_mem = 157557210078315114
net.ipv4.udp_rmem_min = 4096
net.ipv4.udp_wmem_min = 4096
vm.hugepage_pmem_allocall = 0
vm.hugetlb_optimize_vmemmap = 0
vm.lowmem_reserve_ratio = 256256320
vm.memcg_qos_enable = 0
vm.memcg_swap_qos_enable = 0
vm.memory_failure_early_kill = 0
vm.memory_failure_recovery = 1
vm.nr_hugepages_mempolicy = 0
vm.overcommit_memory = 0
[root@developer ~]#

緩存區(qū)的話,一般用的比較多的是網(wǎng)絡(luò)方面的,比如 TCP,UDP,Stock 等。這部分參數(shù)沒有固定的值,一般根據(jù)機器使用場景動態(tài)設(shè)置。

在上面的輸出中,前部位為 socket 級別的網(wǎng)絡(luò)緩存區(qū)限制,socket接受和發(fā)送數(shù)據(jù)的緩存的最大值,這里的配置往往結(jié)合 BDP 進行配置,感興趣小伙伴可以看看我之前網(wǎng)絡(luò)調(diào)優(yōu)的博文。

net.core.optmem_max = 81920
net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.core.wmem_default = 212992
net.core.wmem_max = 212992

后部分為 TCP/UDP 級別的網(wǎng)絡(luò)緩存區(qū)限制,TCP 緩沖區(qū)的大小應(yīng)根據(jù)系統(tǒng)和網(wǎng)絡(luò)的需求進行調(diào)整。較大的緩沖區(qū)可以提高網(wǎng)絡(luò)性能,特別是在高負載或高延遲的網(wǎng)絡(luò)環(huán)境中。但是,過大的緩沖區(qū)可能會導(dǎo)致內(nèi)存占用增加或延遲問題。

net.ipv4.tcp_rmem 和 net.ipv4.tcp_wmem 用于配置 TCP 套接字的接收緩沖區(qū)和發(fā)送緩沖區(qū)的大小。

net.ipv4.tcp_rmem = 40961310726291456
net.ipv4.tcp_wmem = 4096163844194304
net.ipv4.udp_rmem_min = 4096
net.ipv4.udp_wmem_min = 4096

下面的兩個為 系統(tǒng)級別內(nèi)存限制,單位是Page 內(nèi)存頁,4K,分別代表了TCP和UDP的系統(tǒng)層面內(nèi)存限制的值,即網(wǎng)絡(luò)連接的內(nèi)存分配,包括三列:min,pressure,max。

net.ipv4.tcp_mem = 78777  105039  157554
net.ipv4.udp_mem = 157557 210078  315114

這里格式有點問題,我們換一個方式查看。

[root@developer ~]# cat /proc/sys/net/ipv4/tcp_mem
78777 105039  157554
[root@developer ~]#

內(nèi)存超售限制

下面這組內(nèi)核參數(shù)用于限制內(nèi)存的超售問題,內(nèi)存的分配和使用是兩個階段,在分配的時候是虛擬內(nèi)存,而且實際使用才會分配物理內(nèi)存,對于虛擬內(nèi)存的分配,可以是一個很大的值,但是物理內(nèi)存的分配,是有限制的,如果分配的虛擬內(nèi)存大于物理內(nèi)存,那么就會導(dǎo)致內(nèi)存超售,那么這個時候,就需要限制內(nèi)存的超售問題,避免內(nèi)存超售導(dǎo)致系統(tǒng)崩潰。

[root@developer ~]# sysctl -a | grep overcomm
vm.nr_overcommit_hugepages = 0
vm.overcommit_kbytes = 0
vm.overcommit_memory = 0
vm.overcommit_ratio = 50

vm.overcommit_memory = 0 :控制內(nèi)核的內(nèi)存超分配策略,決定是否允許進程申請超過物理內(nèi)存 + Swap 的空間。

  • 0(默認):啟發(fā)式超分配(Heuristic Overcommit)。內(nèi)核根據(jù)當(dāng)前空閑內(nèi)存、可回收緩存(PageCache/SLAB)和 Swap 綜合判斷是否允許分配。若申請量顯著超過可用資源則拒絕。
  • 1:無條件允許超分配(Always Overcommit)。來者不拒,但可能因?qū)嶋H內(nèi)存不足觸發(fā) OOM Killer。
  • 2:禁止超分配(Never Overcommit)。嚴格限制分配總量 ≤ (物理內(nèi)存 × overcommit_ratio%) + Swap。

vm.overcommit_ratio = 50: 當(dāng) overcommit_memory=2 時,定義物理內(nèi)存的可超配比例(默認值 50%)。  計算公式:  CommitLimit = (物理內(nèi)存 × overcommit_ratio / 100) + Swap 。

vm.overcommit_kbytes = 0:與 overcommit_ratio 互斥,直接指定超配的字節(jié)級上限(優(yōu)先級高于 ratio)。

vm.nr_overcommit_hugepages = 0:控制標準大頁(HugePages)的超配數(shù)量,允許臨時分配超出 vm.nr_hugepages 預(yù)設(shè)值的大頁。

上面講到了大頁,這里我們順便看看內(nèi)存頁相關(guān)的內(nèi)存限制。

內(nèi)存頁限制

hugepages 用于限制分配的大頁數(shù)量,這里的大頁指的是標準大頁,即 2MB 的大頁。

sysctl -w vm.nr_hugepages=1024  # 分配1024個大頁(默認2MB/頁)

如果需要自定義大頁的大小,比如 1GB 的大頁,需要通過 hugepagesz 來進行限制,一般啟動時通過GRUB配置。

hugepagesz=1G hugepages=4 default_hugepagesz=1G  # 分配4個1GB大頁

關(guān)于內(nèi)存頁,內(nèi)核相關(guān)的參數(shù)中還有透明大頁的配置,比如透明大頁的開啟,khugepaged 進程的掃描頻率等等,感興趣的小伙伴可以看看我之前關(guān)于大頁的博文。

下面為臟頁/換頁/內(nèi)存回收與保留相關(guān)參數(shù)的內(nèi)存限制。

臟頁指內(nèi)存中已被修改但未寫入磁盤的數(shù)據(jù)頁。內(nèi)核通過以下參數(shù)控制其回寫行為:

[root@developer ~]# sysctl -a | grep dirty
vm.dirty_background_bytes = 0 # 觸發(fā)后臺異步刷盤的臟頁絕對字節(jié)閾值(優(yōu)先級高于ratio)。0表示未啟用,使用dirty_background_ratio控制
vm.dirty_background_ratio = 10 # 觸發(fā)后臺異步刷盤的臟頁內(nèi)存占比閾值(默認10%)。臟頁超限時內(nèi)核啟動后臺線程異步刷盤,不阻塞應(yīng)用
vm.dirty_bytes = 0 # 觸發(fā)同步阻塞刷盤的臟頁絕對字節(jié)閾值(優(yōu)先級高于ratio)。0表示未啟用,使用dirty_ratio控制
vm.dirty_expire_centisecs = 3000 # 臟頁在內(nèi)存中的最長存活時間(默認3000=30秒)。超時后強制刷盤,減少數(shù)據(jù)丟失風(fēng)險
vm.dirty_ratio = 30 # 觸發(fā)同步阻塞刷盤的臟頁內(nèi)存占比閾值(默認30%)。超限時應(yīng)用寫入被阻塞,直至臟頁落盤
vm.dirty_writeback_centisecs = 500 # 內(nèi)核刷盤線程的喚醒間隔(默認500=5秒)。值越小刷盤越頻繁,過高可能導(dǎo)致I/O堆積
vm.dirtytime_expire_seconds = 43200 # 僅修改時間(atime/mtime)的臟元數(shù)據(jù)超時時間(默認43200=12小時)。通常無需調(diào)整

下面為交換分區(qū)使用限制:

vm.memcg_swap_qos_enable = 0   # 內(nèi)存控制組(memcg)的Swap服務(wù)質(zhì)量(QoS)功能開關(guān)
vm.swap_extension = 0          # 擴展Swap空間的機制(通常用于特殊場景,如內(nèi)存壓縮)
vm.swappiness = 30             # 控制內(nèi)核使用Swap的傾向性(范圍0-100)

還有兩個特殊的參數(shù)需要單獨說明一下:

  • vm.min_free_kbytes:系統(tǒng)保留的最小空閑內(nèi)存(單位 KB),用于應(yīng)對突發(fā)需求。
  • vm.watermark_scale_factor:調(diào)整內(nèi)存回收敏感度(默認 10,范圍 1-1000)。
[root@developer ~]# sysctl -a | grep min_free_kbytes
vm.min_free_kbytes = 45056
[root@developer ~]# sysctl -a | grep watermark_scale_factor
vm.watermark_scale_factor = 10
[root@developer ~]#

OOM 相關(guān)內(nèi)存限制

下面為OOM相關(guān),的內(nèi)存限制,關(guān)于 OOM 是什么,什么原理不是本文重點,小伙伴可以看看我之前的博文。

[root@developer ~]# sysctl -a | grep oom
vm.enable_oom_killer = 1       # 啟用OOM Killer機制(默認值)。當(dāng)系統(tǒng)內(nèi)存耗盡時,內(nèi)核自動終止進程釋放內(nèi)存
vm.oom_dump_tasks = 1          # OOM觸發(fā)時記錄所有進程的內(nèi)存狀態(tài)到日志(/var/log/messages),便于事后分析
vm.oom_kill_allocating_task = 0 # 禁用“直接殺死觸發(fā)OOM的進程”。內(nèi)核會掃描所有進程,選擇badness分數(shù)最高的進程終止
vm.panic_on_oom = 0            # OOM時禁止內(nèi)核崩潰(panic)。0表示調(diào)用OOM Killer而非重啟系統(tǒng)(生產(chǎn)環(huán)境推薦
[root@developer ~]#

NUMA內(nèi)存限制

[root@developer ~]# sysctl -a | grep zone_reclaim_mode
vm.zone_reclaim_mode = 0  # 關(guān)閉本地NUMA節(jié)點內(nèi)存強制回收。允許從其他節(jié)點分配內(nèi)存,避免因本地回收降低性能
[root@developer ~]# sysctl -a | grep min_unmapped_ratio
vm.min_unmapped_ratio = 1  # 每個NUMA節(jié)點保留1%的未映射內(nèi)存(用于臨時內(nèi)存分配)
[root@developer ~]#

對于內(nèi)存資源的限制內(nèi)核參數(shù)還有很多,這里只是列舉了部分。

責(zé)任編輯:武曉燕 來源: 山河已無恙
相關(guān)推薦

2023-11-28 08:43:48

2025-04-27 04:22:00

2010-09-26 10:53:00

JVM內(nèi)存調(diào)優(yōu)設(shè)置

2019-07-17 15:45:24

Spark內(nèi)存Java

2014-12-19 11:07:40

Java

2010-09-25 15:52:27

JVM內(nèi)存JVM

2020-08-10 17:49:25

JVM內(nèi)存溢出

2023-02-10 09:28:23

優(yōu)化工具

2023-05-29 07:43:32

JVM內(nèi)存調(diào)優(yōu)

2013-03-20 17:18:07

Linux系統(tǒng)性能調(diào)優(yōu)

2021-09-07 17:18:19

Linux內(nèi)存資源釋放內(nèi)存

2018-05-18 08:43:27

Linux內(nèi)存空間

2022-05-27 11:59:22

Linux內(nèi)存CPU

2016-10-08 12:46:08

Linux監(jiān)控限制

2011-03-21 09:35:38

LAMP調(diào)優(yōu)網(wǎng)絡(luò)文件

2010-05-27 17:10:03

MySQL數(shù)據(jù)庫內(nèi)存

2023-10-18 08:01:27

Java虛擬機

2020-12-30 15:06:39

開發(fā)技能代碼

2014-09-22 13:31:46

Linux

2023-03-07 21:41:23

JVM內(nèi)存服務(wù)器
點贊
收藏

51CTO技術(shù)棧公眾號

日韩电影大片中文字幕| 亚洲午夜激情av| 91久久精品美女高潮| 欧美丰满艳妇bbwbbw| eeuss鲁片一区二区三区| 欧美视频精品一区| 椎名由奈jux491在线播放| 风流老熟女一区二区三区| 国产精品日韩久久久| 日韩一区二区欧美| 欧美一区二区免费在线观看| 精品视频在线一区二区在线| 一区二区三区四区五区视频在线观看 | 亚洲最大的成人网| 亚洲AV无码成人精品区东京热| 成人在线丰满少妇av| 亚洲白虎美女被爆操| 999精彩视频| 蜜桃视频在线网站| 亚洲精品视频一区| 日韩欧美亚洲日产国| 亚洲av综合色区无码一区爱av| 日韩在线一区二区三区| 欧美国产视频一区二区| 男女男精品视频网站| 日韩欧美天堂| 精品久久久久99| 日韩av片专区| 亚洲日本网址| 色综合天天狠狠| 男人插女人视频在线观看| 黄色免费在线网站| 94色蜜桃网一区二区三区| 91精品视频免费看| 中文字幕日韩三级| 久久久国产精品一区二区中文| 性金发美女69hd大尺寸| 国产午夜手机精彩视频| 99久久亚洲精品| 亚洲天堂精品在线| 精品人妻少妇嫩草av无码| 国产精品久久久网站| 日韩视频一区二区三区| 在线观看免费av网址| 国产综合av| 色婷婷综合视频在线观看| 自拍日韩亚洲一区在线| 国产极品人妖在线观看| 亚洲国产精品人人做人人爽| 久久精品在线免费视频| 高潮毛片在线观看| 一区二区三区在线观看国产| www国产无套内射com| 天堂av在线电影| 亚洲欧美视频一区| 欧美一级特黄aaaaaa在线看片| 最新真实国产在线视频| 国产精品久久久久桃色tv| 相泽南亚洲一区二区在线播放| 成人免费在线观看| 中日韩av电影| 国产精品av免费| 粗大黑人巨茎大战欧美成人| 一区二区三区四区激情| 免费观看国产精品视频| 日韩国产激情| 欧美日韩你懂得| 不卡中文字幕在线观看| 欧美不卡在线观看| 精品久久一二三区| 欧美性xxxx图片| 丝袜美腿综合| 在线中文字幕日韩| 91日韩中文字幕| 亚洲国产午夜| 青青草一区二区| 亚洲视频久久久| 国产成人三级在线观看| 九九九九精品九九九九| 国产综合视频一区二区三区免费| 国产精品网站导航| 欧美a级免费视频| 国产高潮在线| 欧美亚男人的天堂| av地址在线观看| 欧美电影免费网站| 日韩最新中文字幕电影免费看| 青青草手机在线观看| 国产精品综合| 91精品国产自产在线老师啪| 蜜臀av免费在线观看| 久久久久亚洲蜜桃| 国产午夜精品视频一区二区三区| 少妇在线看www| 欧美精品 日韩| 懂色av粉嫩av蜜乳av| 欧美超碰在线| 97碰在线观看| 国产美女精品视频国产| 99久久精品一区| 亚洲国产精品影视| 日韩电影大全网站| 精品国产乱码久久久久久久| 无码少妇一区二区| 亚洲黄色av| 成人有码在线播放| 精品欧美不卡一区二区在线观看 | 久久久国产成人| 日韩高清欧美激情| 国产富婆一区二区三区 | 国产精品久久久久久久蜜臀| 日本阿v视频在线观看| 精品成人免费一区二区在线播放| 精品少妇一区二区三区视频免付费| 亚欧洲乱码视频| 欧美日韩ab| 成人妇女淫片aaaa视频| 神马电影在线观看| 亚洲国产精品一区二区www在线 | 日韩亚洲国产免费| 国产视频精品免费播放| 成年人午夜剧场| 看片网站欧美日韩| 久久久婷婷一区二区三区不卡| 97超碰在线公开在线看免费| 欧美亚洲综合色| 手机在线成人av| 欧美国产日本| 91美女片黄在线观| 欧美一区二区三区| 欧美三级视频在线| 亚洲第一综合网| 久久久久国产精品一区三寸| 国产精品乱码视频| 美洲精品一卡2卡三卡4卡四卡| 欧美久久久久久久久中文字幕| 青娱乐国产视频| 久久久久国产精品一区三寸| 你懂的网址一区二区三区| 51漫画成人app入口| 精品久久一二三区| 日本熟妇毛耸耸xxxxxx| 国产91精品一区二区麻豆亚洲| 97精品国产97久久久久久粉红| 日韩成人综合网站| 日韩在线小视频| 中文字幕在线播出| 中文字幕永久在线不卡| 国产成年人视频网站| 欧美亚洲激情| 成人福利视频网| 成人欧美在线| 欧美一级日韩不卡播放免费| 国产乱国产乱老熟300| 国产精品一区二区在线观看网站| 吴梦梦av在线| 欧美a级大片在线| 久久久久国产一区二区三区| 人妻无码一区二区三区久久99 | 北条麻妃在线一区二区| 国产一区二区麻豆| 亚洲精品一卡二卡| 野战少妇38p| 国产精品人人爽人人做我的可爱| 精品国产一区二区三| 亚洲欧美小说色综合小说一区| 亚洲欧美另类中文字幕| 欧美一级做a爰片免费视频| 国产精品色噜噜| 深夜做爰性大片蜜桃| 亚洲国产高清一区二区三区| 久久国产一区| 99久久久国产精品免费调教网站| 久久精品国产免费观看| 亚洲AV无码成人片在线观看| 五月天婷婷综合| 白白色免费视频| 久久99九九99精品| 男人添女人下部视频免费| 日韩高清电影免费| 国产美女精品免费电影| 任你弄在线视频免费观看| 日韩精品中文字幕在线播放| 亚洲天堂免费av| 亚洲一区二区三区自拍| 谁有免费的黄色网址| 国产精品一区二区久久不卡 | 国产精品一区二区免费不卡| 国产 日韩 亚洲 欧美| 精品freesex老太交| 亚洲一区二区自拍| 亚洲成人看片| 欧美区在线播放| 久久久久久女乱国产| 日韩欧美亚洲国产另类| 一级片视频在线观看| 亚洲欧美激情插| 日韩人妻无码一区二区三区| 国产综合色视频| 免费观看精品视频| 女人香蕉久久**毛片精品| 欧美日韩高清在线一区| 国产欧美视频在线| 国产精品高潮在线| 久久男人av资源站| 久久91精品国产91久久跳| 国产高清一区在线观看| 亚洲国产日韩一区| av中文字幕免费在线观看| 91黄色在线观看| 国产无遮挡又黄又爽在线观看| 亚洲国产精品99久久久久久久久 | 另类ts人妖一区二区三区| 成人a在线观看| 日日夜夜天天综合| 久久久欧美一区二区| 免费在线观看黄色网| 日韩久久午夜影院| 亚洲精品一区二区三区不卡| 欧美福利视频导航| 少妇又紧又色又爽又刺激视频| 精品动漫一区二区| 欧美精品一区二区蜜桃| 国产精品福利av| 天天操天天干天天操天天干| 99re热视频精品| 理论片大全免费理伦片| 国产精品主播直播| 波多野结衣在线免费观看| 美女任你摸久久| 天天影视综合色| 久久一综合视频| 人妻精品无码一区二区三区| 亚洲经典自拍| 国产av麻豆mag剧集| 在线观看一区视频| 日本福利视频一区| 欧美特黄a级高清免费大片a级| 中文字幕成人一区| 欧美丰满日韩| 国产福利片一区二区| 久久久久久久久99精品大| 亚洲一二三区在线| 欧美hd在线| 在线天堂一区av电影| 久久国产中文字幕| www亚洲国产| 亚洲在线久久| 欧美狂野激情性xxxx在线观| 午夜日本精品| 大伊香蕉精品视频在线| 亚洲黄色视屏| 久久综合九色综合88i| 一本综合久久| 免费av网址在线| 青草国产精品久久久久久| 天天色综合社区| 久久se这里有精品| 丰满人妻一区二区三区53视频| 国产精品66部| 艳妇乳肉豪妇荡乳xxx| 99re这里只有精品首页| 一区二区三区四区免费| 国产精品理论在线观看| 欧美做爰啪啪xxxⅹ性| 亚洲综合一二区| www亚洲视频| 欧美日韩国产高清一区二区| 国产裸体无遮挡| 精品欧美一区二区三区精品久久| 亚洲av激情无码专区在线播放| 亚洲欧美日韩精品久久奇米色影视 | 日韩毛片免费看| 99视频国产精品免费观看| 精品日产乱码久久久久久仙踪林| 欧美日韩精品免费观看视一区二区| 成人羞羞网站入口| 久久久99精品视频| 免费一级欧美片在线播放| 国产精品一区二区小说| 国产xxx精品视频大全| 精品人妻无码一区二区三区换脸| 国产精品久久久久婷婷 | 欧美亚洲日本国产| 国产乱码精品一区二区三区精东| 精品国产凹凸成av人网站| 日韩电影在线观看完整版| 精品国产欧美一区二区三区成人| 国产高清在线a视频大全 | aa亚洲一区一区三区| 国产精品视频500部| 不卡中文字幕| 国产精品一线二线三线| 秋霞国产午夜精品免费视频| 91超薄肉色丝袜交足高跟凉鞋| 久久精品男人的天堂| 澳门黄色一级片| 色婷婷精品久久二区二区蜜臂av| 国产人妖一区二区| 亚洲香蕉在线观看| 美洲精品一卡2卡三卡4卡四卡| 国产精品男人的天堂| 久久久久观看| 免费看污污视频| 日本亚洲三级在线| 中文字幕第3页| 亚洲免费观看高清完整| 亚洲 日本 欧美 中文幕| 精品国产乱码久久久久久图片| 在线观看精品一区二区三区| 26uuu亚洲国产精品| 综合中文字幕| aaa免费在线观看| 日韩1区2区3区| 美女又爽又黄视频毛茸茸| 亚洲综合一二三区| 国产视频在线免费观看| 综合激情国产一区| 性欧美hd调教| 蜜桃导航-精品导航| 今天的高清视频免费播放成人| 色啦啦av综合| 国产精品色在线| 国产精品久久久久久久久久精爆| 欧美精品一区二区高清在线观看| 无遮挡动作视频在线观看免费入口 | 日韩一区二区三区免费看| 国产小视频在线播放| 欧美伊久线香蕉线新在线| 风间由美一区二区av101| 穿情趣内衣被c到高潮视频| 久久精品国产精品亚洲红杏| 欧美18—19性高清hd4k| 色婷婷综合久久| 嫩草研究院在线观看| 欧美中文字幕视频| 欧美美女黄色| 久久久一本二本三本| 99re热这里只有精品免费视频| 日韩 国产 在线| 欧美精品一区二区在线观看| 激情av在线播放| 国产精品.com| 99精品国产一区二区青青牛奶| 女性生殖扒开酷刑vk| 亚洲高清视频的网址| 亚洲精品久久久久久久久久 | 香蕉精品视频在线| 狠狠久久亚洲欧美| 搜索黄色一级片| 日韩视频在线一区二区| 欧美人与性动交α欧美精品济南到 | av一级黄色片| 欧美巨大黑人极品精男| 青草伊人久久| 欧美一级欧美一级| 99国产精品久| 五月天中文字幕| 日韩有码在线观看| 狂野欧美xxxx韩国少妇| 久草免费福利在线| 91欧美一区二区| 最新中文字幕第一页| 播播国产欧美激情| 成人爽a毛片| 欧美精品色婷婷五月综合| 中文一区在线播放| 国产高清不卡视频| 欧美最猛黑人xxxx黑人猛叫黄| 精品国产精品国产偷麻豆| 小早川怜子一区二区三区| 亚洲综合色成人| 黄色av网站在线| 91九色精品视频| 国产欧美日韩综合一区在线播放 | 女人扒开双腿让男人捅| 午夜视黄欧洲亚洲| 啊v视频在线| 国产高清精品一区二区三区| 欧美一级一区| 日本天堂中文字幕| 亚洲免费成人av电影| 伊人国产精品| 97国产精东麻豆人妻电影| 中文字幕第一页久久| 亚洲精品字幕在线观看| 国产99在线|中文| 亚洲情侣在线| 中文字幕一区二区三区人妻不卡| 欧美三区在线视频| 123区在线| 亚洲成年人专区| wwww国产精品欧美| www视频在线| 国产精品日韩av| 日韩视频二区| 欧美黄色aaa| 国产亚洲福利一区| 久久中文资源| 污污视频在线免费|