我有一个远程备份设置。这使用专用ssh
用户。我们来调用用户rsyncbak-ubuntu-vm
我开始在 Ubuntu 上测试这个。在 的主目录中rsyncbak-ubuntu-vm
,Ubuntu 创建了一个snap/
目录。
Ubuntu什么时候创建该snap/
目录?是在创建用户的时候吗?是在首次打开 PAM 会话进行登录时(例如,因为打开了 ssh 连接)吗?
我使用一台 Fedora 39 机器来管理另一台 Fedora 39 机器,使用的是 Ansible 剧本。这工作正常。
我尝试使用 Ubuntu 22.04 运行相同的剧本,目标是同一台 Fedora 39 机器。它失败了。为什么会失败?
任务 [收集事实] ****************************************************************************************************************
严重错误:[alan-laptop]: 失败!=> {"ansible_facts": {}, "changed": false, "failed_modules": {"ansible.legacy.setup": {"failed": true, "module_stderr": "共享连接到 alan-laptop 已关闭。
", "module_stdout":
追踪栈 (最近的调用最后):
文件 "/home/alan-sysop/.ansible/tmp/ansible-tmp-1716281784.2385828-132440-85599417152925/AnsiballZ_setup.py", 第 102 行, 在 <module>
_ansiballz_main()
文件 "/home/alan-sysop/.ansible/tmp/ansible-tmp-1716281784.2385828-132440-85599417152925/AnsiballZ_setup.py", 第 94 行, 在 _ansiballz_main
invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
文件 "/home/alan-sysop/.ansible/tmp/ansible-tmp-1716281784.2385828-132440-85599417152925/AnsiballZ_setup.py", 第 37 行, 在 invoke_module
from ansible.module_utils import basic
文件 "/tmp/ansible_ansible.legacy.setup_payload_0vjz3har/ansible_ansible.legacy.setup_payload.zip/ansible/module_utils/basic.py", 第 176 行, 在 <module>
ModuleNotFoundError: 没有名为 'ansible.module_utils.six.moves' 的模块;
", "msg": "模块失败\n查看 stdout/stderr 获取确切的错误", "rc": 1}}, "msg": "以下模块未能执行: ansible.legacy.setup"}
我的 Ansible 包版本是 2.10.7+merged+base+2.10.8+dfsg-1ubuntu0.1~esm1。
apt-cacher-ng
。/etc/apt/apt.conf.d/02proxy
用这一行创建了:Acquire::http::proxy "http://my-server:3142";
google-chrome-stable_current_amd64.deb
。问:后来,我发现检查软件更新时出现问题。发生了什么?
在 Ubuntu Desktop 22.04 上,软件更新程序只是说“无法下载存储库信息。请检查您的互联网连接”。
或者在 Debian 11 (GNOME) 上,软件显示弹出错误:
无法下载更新:
E: https://dl.google.com/linux/chrome/deb stable InRelease (yet) is not (yet) available (来自代理的无效响应:HTTP/1.0 CONNECT denied (要求管理员启用 HTTPS 隧道) [IP:我的服务器-IP 3142]
在 Ubuntu 和 Debian 上运行apt update
显示完整的错误。
最后,如果您使用 Ubuntu 22.04,但切换到使用 GNOME Software应用程序(例如,为了避免快照),则根本没有错误消息!Chrome 网络浏览器的安全更新似乎将在没有任何警告的情况下被跳过。可能是因为它是旧版本的 GNOME 软件。
我安装firewalld
在我的 Debian 10 笔记本电脑上。现在传输无法正确上传。如果我进入 Edit->Preferences->Network 并单击 [Test Port],它说端口已关闭。如果我systemctl stop firewalld
重新启动传输,那么它说端口是打开的。
如何将传输与防火墙一起使用?
fstrim 如何/为什么修剪比我可用的空间更多的空间?
$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/drystone_2019-debian 93G 84G 4.6G 95% /
$ sudo fstrim -v /
/: 8.8 GiB (9395548160 bytes) trimmed
$ uname -r
4.19.0-6-amd64
$ head -n1 /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
我写了一个使用位置参数的“内联脚本”,例如
$ sudo sh -c 'echo "p0=$0" && echo "p1=$1" && echo "p2=$2" && echo "all=$@"' sh 1 2
p0=sh
p1=1
p2=2
all=1 2
我实际上想使用sudo --login
. 但是位置参数不起作用。有没有办法让它们工作?
(如果行为在某处被记录或标准化,我也很感兴趣)。
$ sudo --login sh -c 'echo "p0=$0" && echo "p1=$1" && echo "p2=$2" && echo "all=$@"' sh 1 2
p0=-bash
p1=
p2=
all=1 2
软件版本:
$ sh --version
GNU bash, version 5.0.7(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ sudo --version
Sudo version 1.8.27
Sudoers policy plugin version 1.8.27
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.27
假设一个程序请求一些内存,但没有足够的可用内存。Linux 有几种不同的响应方式。一种反应是选择其他一些最近没有被访问过的使用过的内存,并将这个不活动的内存移动到交换。
但是,我看到许多超出此范围的文章和评论。他们说即使有大量空闲内存,Linux 有时也会决定将非活动内存写入交换。提前写入交换意味着当我们最终要使用这块内存时,我们不必等待磁盘写入。他们说这是优化性能的深思熟虑的策略。
他们是对的吗?或者这是一个神话?引用您的来源。
请使用以下定义来理解这个问题:
MemFree
来自 的值/proc/meminfo
。 /proc/meminfo
是内核提供的虚拟文本文件。请参阅proc(5)或RHEL 文档。以下是一些搜索词:linux“机会交换”或(交换“当系统无事可做时”或“当它无事可做时”或“当系统空闲时”或“在空闲时间”)
在 Google 的第二高结果中,StackExchange 用户询问“为什么在 RAM 中有足够多的可用空间时使用交换?”,并复制free
显示大约 20% 可用内存的命令结果。在回答这个具体问题时,我看到这个答案被高度评价:
Linux 在 RAM 被填满之前开始交换。这样做是为了提高性能和响应能力:
性能提高了,因为有时 RAM 更适合用于磁盘缓存而不是存储程序内存。所以最好换掉一段时间不活动的程序,而将常用文件保存在缓存中。
通过在系统空闲时换出页面来提高响应能力,而不是在内存已满并且某些程序正在运行并请求更多 RAM 来完成任务时。
当然,交换确实会减慢系统速度——但交换的替代方法不是不交换,而是拥有更多的 RAM 或使用更少的 RAM。
Google 上的第一个结果已被标记为与上述问题的重复 :-)。MemFree
在这种情况下,提问者从 16GB 中复制了显示 7GB 的详细信息。这个问题有一个自己被接受和赞成的答案:
仅当没有空闲内存时才进行交换,只有设置
swappiness
为 0 时才会发生这种情况。否则,在空闲时间,内核将交换内存。在这样做时,数据不会从内存中删除,而是在交换分区中制作一个副本。这意味着,如果出现内存耗尽的情况,它不必当场写入磁盘。在这种情况下,内核可以只覆盖已经交换的内存页面,因为它知道它有一份数据副本。
该
swappiness
参数基本上只是控制它执行此操作的程度。
另一个引用没有明确声称交换的数据也保留在内存中。但是,如果您在有 20% 可用内存的情况下进行交换,那么您似乎更喜欢这种方法,并且这样做的原因是为了提高性能。
据我所知,Linux 确实支持在主内存和交换空间中保留相同数据的副本。
我还注意到“机会交换”发生在“空闲时间”的普遍说法。我知道它应该有助于让我放心,这个功能通常对性能有好处。我没有在上面的定义中包含这个,因为我认为它已经有足够的细节来提出一个很好的明确问题。我不想让这变得比它需要的更复杂。
当我有千兆字节的可用内存时,顶部显示“swout”(交换)。为什么?
有一些这样的报告,当有足够的可用内存时,Linux 会写入交换。“机会性交换”可以解释这些报告。同时,至少提出了一个替代原因。作为查看可能原因的第一步:Linux 是否曾经执行过上述定义的“机会交换”?
在我报告的示例中,问题现已得到解答。原因不是机会主义的交换。
$ ps -aux|grep atd
daemon 800 0.0 0.1 27964 2228 ? Ss 19:11 0:00 /usr/sbin/atd -f
alan-sy+ 7042 0.0 0.0 12780 948 pts/0 S+ 20:22 0:00 grep atd
$ /sbin/getpcaps 800
Capabilities for `800': = cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read+p
$ ls -l /usr/sbin/atd
-rwxr-xr-x 1 root root 22536 Dec 8 2016 /usr/sbin/atd
# /lib/systemd/system/atd.service
[Unit]
Description=Deferred execution scheduler
Documentation=man:atd(8)
[Service]
ExecStart=/usr/sbin/atd -f
IgnoreSIGPIPE=false
[Install]
WantedBy=multi-user.target
at
包版本是3.1.20-3
.
为什么会atd
掉落给daemon
用户?它在 Fedora Linux 30 上不这样做。
atd
仍然必须保留所有功能,因为它可以接受来自任何用户的请求并以该用户身份运行作业,包括root
.
daemon
用户不应该被使用。如有必要,个别守护程序应该使用自己的用户帐户,以限制安全妥协。(在这种情况下可能无关紧要,因为内核不允许非 root 用户操作保留任何 root 权限的进程)。
我在 virt-manager 中有虚拟机。通常,他们可以连接到互联网。这些虚拟机连接到我的默认虚拟网络 device virbr0
。为了访问互联网,虚拟网络被配置为“NAT 转发”。
但是虚拟机无法再连接到互联网。他们可以ping
使用 IP 地址 192.168.122.1 上的主机,VM 将其视为默认路由器。但是,ping google.com
挂起 5 秒然后返回No address associated with hostname
。
我认为这可能是主机防火墙的问题。我试过了systemctl stop firewalld
,现在sudo iptables-save
显示为空,但虚拟机仍然无法连接到互联网。奇怪的是,ping google.com
现在能够解析 IP 地址,但没有显示任何 ping 回复,也没有任何 ICMP 错误。IE:
PING google.com (216.58.198.174) 56(84) bytes of data.
^C
--- google.com ping statistics ---
44 packets transmitted, 0 received, 100% packet loss, time 44018ms
可能出了什么问题?我怎样才能知道?
我/dev/sda
使用 1MiB 块大小读取。Linux 似乎将 IO 请求限制为512KiB平均大小为 512KiB。这里发生了什么?这种行为是否有配置选项?
$ sudo dd iflag=direct if=/dev/sda bs=1M of=/dev/null status=progress
1545601024 bytes (1.5 GB, 1.4 GiB) copied, 10 s, 155 MB/s
1521+0 records in
1520+0 records out
...
当我的dd
命令运行时,rareq-sz
是 512。
Rareq-sz 向设备发出的读取请求的平均大小(以千字节为单位)。
$ iostat -d -x 3
...
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
sda 309.00 0.00 158149.33 0.00 0.00 0.00 0.00 0.00 5.24 0.00 1.42 511.81 0.00 1.11 34.27
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
...
内核版本是5.1.15-300.fc30.x86_64
. max_sectors_kb
是1280。
$ cd /sys/class/block/sda/queue
$ grep -H . max_sectors_kb max_hw_sectors_kb max_segments max_segment_size optimal_io_size logical_block_size chunk_sectors
max_sectors_kb:1280
max_hw_sectors_kb:32767
max_segments:168
max_segment_size:65536
optimal_io_size:0
logical_block_size:512
chunk_sectors:0
默认情况下,我使用 BFQ I/O 调度程序。之后我也尝试重复测试echo 0 | sudo tee wbt_lat_usec
。然后我也尝试在之后重复测试echo mq-deadline|sudo tee scheduler
。结果保持不变。
除了 WBT,我对两个 I/O 调度程序都使用了默认设置。例如,对于mq-deadline
,iosched/read_expire
是 500,相当于半秒。
在最后一次测试期间(mq-deadline,WBT 禁用),我跑了btrace /dev/sda
. 它显示所有请求被分成两个不相等的两半:
8,0 0 3090 5.516361551 15201 Q R 6496256 + 2048 [dd]
8,0 0 3091 5.516370559 15201 X R 6496256 / 6497600 [dd]
8,0 0 3092 5.516374414 15201 G R 6496256 + 1344 [dd]
8,0 0 3093 5.516376502 15201 I R 6496256 + 1344 [dd]
8,0 0 3094 5.516388293 15201 G R 6497600 + 704 [dd]
8,0 0 3095 5.516388891 15201 I R 6497600 + 704 [dd]
8,0 0 3096 5.516400193 733 D R 6496256 + 1344 [kworker/0:1H]
8,0 0 3097 5.516427886 733 D R 6497600 + 704 [kworker/0:1H]
8,0 0 3098 5.521033332 0 C R 6496256 + 1344 [0]
8,0 0 3099 5.523001591 0 C R 6497600 + 704 [0]
X -- split在[软件] RAID 或设备映射器设置中,传入的 i/o 可能跨越设备或内部区域,并且需要被分割成更小的部分以进行服务。这可能表明由于该 raid/dm 设备设置错误导致的性能问题,但也可能只是正常边界条件的一部分。dm 在这方面特别糟糕,会克隆很多 i/o。
iostat
忽略%util
号码。在这个版本中被破坏了。(`dd` 正在全速运行,但我只看到 20% 的磁盘利用率。为什么?)
我认为 由于基于 %utilaqu-sz
也会受到影响。虽然我认为这意味着它在这里会大三倍(100/34.27)。
忽略svtm
号码。“警告!不要再相信这个字段了。这个字段将在未来的 sysstat 版本中被删除。”
MEM - 内存占用。
此行包含物理内存总量 (
tot
),[...] 共享内存的常驻大小,包括 tmpfs (shmem
),共享内存的常驻大小 (shrss
) 当前交换的共享内存量 (shswp
) [.. .]
shrss
/的描述shswp
对我来说太模糊了。它实际上涵盖了什么?
MEM | tot 7.7G | free 3.6G | cache 2.1G | dirty 0.3M | buff 258.1M | slab 306.4M | slrec 182.7M | shmem 257.5M | shrss 12.7M | shswp 0.0M | vmbal 0.0M | | hptot 0.0M | hpuse 0.0M |
$ rpm -q atop
atop-2.4.0-1.fc30.x86_64
linux-5.1/Documentation/cpu-load.txt
[...]
在大多数情况下,
/proc/stat
信息非常接近地反映了现实,但是由于内核如何/何时收集这些数据的性质,有时它根本不可信。[...]
如果我们想象系统有一个任务,它以下列方式周期性地燃烧周期:
time line between two timer interrupts |--------------------------------------| ^ ^ |_ something begins working | |_ something goes to sleep (only to be awaken quite soon)
在上述情况下,系统将根据 0% 加载
/proc/stat
(因为定时器中断总是在系统执行空闲处理程序时发生),但实际上负载更接近 99%。
该文件于 2007 年添加。
例如,如果有足够便宜和可靠的时间源(可靠的 TSC ) ,是否修改了 CPU 调度程序(例如 schedule() 函数)以测量每次进程从可运行转换为等待的时间?
该文档包括一个示例程序,smallhog.c
. 根据 LKML.org 上的链接线程,它能够占用 CPU,而内核只报告了几个 % 或更少的 CPU 使用率。
我尝试在我当前的系统上编译和运行它。内核报告程序的 CPU 使用率约为 80%。所以情况似乎发生了一些变化。我们是否确切地知道为什么smallhog.c
在这个系统上效率较低?
我使用 Fedora 30,Linux 内核 v5.2.0-rc5(大约),在“Intel(R) Core(TM) i5-5300U CPU”上以 64 位模式运行。
lscpu
显示constant_tsc
和nonstop_tsc
。journalctl -k | grep -iE "TSC|clocksource"
看起来内核发现 TSC 没有问题。cat /sys/devices/system/clocksource/clocksource0
显示“tsc”。我看到链接的线程说
在所有架构上并非如此,有些架构通过记录用户/内核/中断转换的时间来进行更准确的记账......的确。这当然是常见的更无聊的 PC 架构的方式。
(也许hrtick的开发可能会对这个问题产生影响?即使只是为了使它更难利用。或者更容易?或者只是需要稍微不同的代码来利用?)。
X.org X Windows系统中鼠标光标是如何实现的?具体来说,我们应该如何理解这些错误情况:
1) 我记得有时会看到整个 GUI 变得缓慢、卡顿或停止。但是鼠标光标还是反应很快。例如,如果您使用太多内存并开始“抖动”,这可能会发生。(系统不断地换出磁盘并再次换入)。
2) 其他时候,Linux 图形驱动程序曾经崩溃。屏幕可能被冻结、损坏或介于两者之间。但有时鼠标光标在冻结或损坏的显示之上仍能顺利响应。
还有一些可能与鼠标光标损坏有关的问题(和解决方法)的提示:
我在跑步atop
。它正在工作,但后来它以退出状态 53 死亡。
$ atop
$ echo $?
53
这是一个错误atop
吗?还是我的系统出现故障?
我检查了内核日志 ( dmesg
)。我发现没有什么特别令人担忧的,但有一些错误。见下文。
这台笔记本电脑已经可靠使用了几个月了。内核没有被“污染”,因此没有内核 WARN 或 OOPS 消息。
$ cat /proc/sys/kernel/tainted
0
$ rpm -q atop
atop-2.3.0-10.fc28.x86_64
$ uname -r # My kernel version
5.1.6-200.fc29.x86_64
dmesg
提醒我,我最近将计算机从睡眠中唤醒,并atop
在它进入睡眠之前启动。
dmesg
也发生显示 USB 和 FAT 错误,因为在此期间我与连接不良的 USB 记忆棒失去了连接。
从挂起恢复期间有一些硬件消息。但在过去的几个月里,我没有遇到任何用户可见的睡眠/唤醒问题。
还有一些早期的dmesg
错误。
[40654.082396] PM: suspend exit
[40654.205336] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq
[40654.517627] Bluetooth: hci0: unexpected event for opcode 0xfc2f
[40654.534651] Bluetooth: hci0: Intel firmware patch completed and activated
[40655.519592] e1000e 0000:00:19.0 eno1: Detected Hardware Unit Hang:
TDH <0>
TDT <10>
next_to_use <10>
next_to_clean <0>
buffer_info[next_to_clean]:
time_stamp <10267d16b>
next_to_watch <1>
jiffies <10267d740>
next_to_watch.status <0>
MAC Status <80000>
PHY Status <7949>
PHY 1000BASE-T Status <0>
PHY Extended Status <3000>
PCI Status <10>
[40656.239991] Process accounting resumed
[40656.318355] e1000e: eno1 NIC Link is Down
...
[41013.654127] usb 2-2: USB disconnect, device number 43
[41013.901953] usb 2-2: new full-speed USB device number 46 using xhci_hcd
[41020.270316] FAT-fs (sdb4): Directory bread(block 22704) failed
[41020.270322] FAT-fs (sdb4): Directory bread(block 22705) failed
[41020.270325] FAT-fs (sdb4): Directory bread(block 22706) failed
[41020.270328] FAT-fs (sdb4): Directory bread(block 22707) failed
[41020.270331] FAT-fs (sdb4): Directory bread(block 22708) failed
[41020.270333] FAT-fs (sdb4): Directory bread(block 22709) failed
[41020.270336] FAT-fs (sdb4): Directory bread(block 22710) failed
[41020.270339] FAT-fs (sdb4): Directory bread(block 22711) failed
[41020.270354] FAT-fs (sdb4): Directory bread(block 22704) failed
[41020.270357] FAT-fs (sdb4): Directory bread(block 22705) failed
[41029.558085] usb 2-2: device descriptor read/64, error -110
[41029.780057] usb 2-2: device descriptor read/64, error -71
[41029.996102] usb 2-2: new full-speed USB device number 47 using xhci_hcd
[41030.110057] usb 2-2: device descriptor read/64, error -71
[41030.332052] usb 2-2: device descriptor read/64, error -71
[41030.434046] usb usb2-port2: attempt power cycle
[41031.061973] usb 2-2: new full-speed USB device number 48 using xhci_hcd
[41031.062086] usb 2-2: Device not responding to setup address.
[41031.266212] usb 2-2: Device not responding to setup address.
[41031.474101] usb 2-2: device not accepting address 48, error -71
[41031.588100] usb 2-2: new full-speed USB device number 49 using xhci_hcd
[41031.588294] usb 2-2: Device not responding to setup address.
[41031.794271] usb 2-2: Device not responding to setup address.
[41032.002095] usb 2-2: device not accepting address 49, error -71
[41032.002202] usb usb2-port2: unable to enumerate USB device
[41070.004040] usb 2-1: new high-speed USB device number 50 using xhci_hcd
[41075.638042] usb 2-1: device descriptor read/64, error -110
[41075.877302] usb 2-1: New USB device found, idVendor=0718, idProduct=063d, bcdDevice= 1.00
[41075.877309] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[41075.877313] usb 2-1: Product: Nano Pro
[41075.877316] usb 2-1: Manufacturer: Imation
[41075.877319] usb 2-1: SerialNumber: 0703335B0AF92D86
[41075.881530] usb-storage 2-1:1.0: USB Mass Storage device detected
[41075.882899] scsi host3: usb-storage 2-1:1.0
[41077.004052] scsi 3:0:0:0: Direct-Access Imation Nano Pro PMAP PQ: 0 ANSI: 4
[41077.005015] sd 3:0:0:0: Attached scsi generic sg1 type 0
[41078.366583] sd 3:0:0:0: [sdc] 15116736 512-byte logical blocks: (7.74 GB/7.21 GiB)
[41078.366732] sd 3:0:0:0: [sdc] Write Protect is off
[41078.366735] sd 3:0:0:0: [sdc] Mode Sense: 23 00 00 00
[41078.366935] sd 3:0:0:0: [sdc] No Caching mode page found
[41078.366939] sd 3:0:0:0: [sdc] Assuming drive cache: write through
[41078.389637] sdc: sdc1 sdc2 sdc3 sdc4
[41078.392305] sd 3:0:0:0: [sdc] Attached SCSI removable disk
之前的错误:
$ journalctl -o short-monotonic -k -p err
[ 14.953318] alan-laptop kernel: i801_smbus 0000:00:1f.3: Failed to enable SMBus PCI device (-16)
[ 15.919042] alan-laptop kernel: uvcvideo: Failed to query (GET_INFO) UVC control 3 on unit 1: -32 (exp. 1).
[ 15.974276] alan-laptop kernel: Bluetooth: hci0: unexpected event for opcode 0xfc2f
[ 19.812805] alan-laptop kernel: db_root: cannot open: /etc/target
[ 35.219443] alan-laptop kernel: Bluetooth: hci0: unexpected event for opcode 0xfc2f
...
[19625.693967] alan-laptop kernel: Bluetooth: hci0: unexpected event for opcode 0xfc2f
[20606.292276] alan-laptop kernel: ACPI Error: Thread 3649118016 cannot release Mutex [PATM] acquired by thread 2284756800 (20190215/exmutex-382)
[20606.292282] alan-laptop kernel: ACPI Error: Aborting method \_SB.PCI0.LPCB.ECDV._Q66 due to previous error (AE_AML_NOT_OWNER) (20190215/psparse-53>
[20609.491788] alan-laptop kernel: Bluetooth: hci0: unexpected event for opcode 0xfc2f
[22006.616549] alan-laptop kernel: Bluetooth: hci0: unexpected event for opcode 0xfc2f
[28469.301081] alan-laptop kernel: Bluetooth: hci0: unexpected event for opcode 0xfc2f
[28472.604260] alan-laptop kernel: Bluetooth: hci0: command 0x0c56 tx timeout
[30297.940165] alan-laptop kernel: Bluetooth: hci0: unexpected event for opcode 0xfc2f
[30355.700904] alan-laptop kernel: mmc0: error -110 doing runtime resume
[30355.939525] alan-laptop kernel: Bluetooth: hci0: unexpected event for opcode 0xfc2f
我在这里写了一个答案:我的系统上的“水印”内存预留有多大? “正常”区域的“最小”水印显示为 31449 页。这是 125796 KiB - 比我的整个min_free_kbytes
(67584) 大。
重置将此区域min_free_kbytes
的水印设置min
为预期级别(例如 9582 页)。但过了一段时间,它又回到了更高的水平。
我相信这是由于boost_watermark()。它将“min”、“low”和“high”水印提升相同的数量。 watermark_boost_factor是 15000,所以最大提升应该是原始“高”水印的 150%...
为什么我的“高”水印一开始就这么高?(以及“低”水印):
由于我的watermark_scale_factor是 10,“min”、“low”和“high”之间的距离应该只有区域大小的 0.1%。但是如果我在重置后立即查看min_free_kbytes
,“min”和“low”之间的差异是区域大小的 2%。为什么?
(此外,“低”和“高”之间的差异是区域大小的 0.2%。所以这也不是我们所期望的!)。
我认为设置水印的代码在__setup_per_zone_wmarks()中。
内核版本:5.0.17-200.fc29.x86_64
来自/proc/zoneinfo
:
Node 0, zone Normal
pages free 74597
min 9582
low 34505
high 36900
spanned 1173504
present 1173504
managed 1140349
我在 DMA32 区域看不到这种巨大的差异。看起来“最小”水印在 DMA32 区域中也没有得到提升,可能是因为内核更喜欢从“正常”区域分配。
Node 0, zone DMA
...
pages free 3961
min 33
low 41
high 49
spanned 4095
present 3996
managed 3961
...
Node 0, zone DMA32
pages free 334671
min 7280
low 9100
high 10920
spanned 1044480
present 888973
managed 866356
我的机器有大约 8GB 的 RAM。为什么min_free_kbytes
设置为67584?内核代码注释说我应该期望看到min_free_kbytes
设置为 11584 左右。它还说它将设置为 65536。
$ cat /proc/sys/vm/min_free_kbytes
67584
$ free -h
total used free shared buff/cache available
Mem: 7.7Gi 3.2Gi 615Mi 510Mi 3.9Gi 3.7Gi
Swap: 2.0Gi 707Mi 1.3Gi
$ grep -r min_free_kbytes /etc/sysctl* # No manual configuration
$
$ uname -r # My kernel version
5.0.17-200.fc29.x86_64
https://elixir.bootlin.com/linux/v5.0.17/source/mm/page_alloc.c#L7567
/*
* Initialise min_free_kbytes.
*
* For small machines we want it small (128k min). For large machines
* we want it large (64MB max). But it is not linear, because network
* bandwidth does not increase linearly with machine size. We use
*
* min_free_kbytes = 4 * sqrt(lowmem_kbytes), for better accuracy:
* min_free_kbytes = sqrt(lowmem_kbytes * 16)
*
* which yields
*
* 16MB: 512k
* 32MB: 724k
* 64MB: 1024k
* 128MB: 1448k
* 256MB: 2048k
* 512MB: 2896k
* 1024MB: 4096k
* 2048MB: 5792k
* 4096MB: 8192k
* 8192MB: 11584k
* 16384MB: 16384k
*/
为什么“Unevictable”内存比“Mlocked”内存大?
$ cp /proc/meminfo meminfo
$ grep -iE "lock|evictable" meminfo
Unevictable: 161436 kB
Mlocked: 12772 kB
$ uname -r # My kernel version
5.0.17-200.fc29.x86_64
“不可战胜”内存的背景链接:
内核是在标准支持下编译的tmpfs
。我看不到任何ramfs
(即任何不可交换的 ram 文件系统)。
$ df -t ramfs
df: no file systems processed
$ cat meminfo
MemTotal: 8042664 kB
MemFree: 3733932 kB
MemAvailable: 5175960 kB
Buffers: 193684 kB
Cached: 1810672 kB
SwapCached: 14628 kB
Active: 2020900 kB
Inactive: 1644208 kB
Active(anon): 1127976 kB
Inactive(anon): 945940 kB
Active(file): 892924 kB
Inactive(file): 698268 kB
Unevictable: 161436 kB
Mlocked: 12772 kB
SwapTotal: 2097148 kB
SwapFree: 1465180 kB
Dirty: 312 kB
Writeback: 0 kB
AnonPages: 1813196 kB
Mapped: 539216 kB
Shmem: 408808 kB
KReclaimable: 160752 kB
Slab: 320584 kB
SReclaimable: 160752 kB
SUnreclaim: 159832 kB
KernelStack: 17792 kB
PageTables: 37288 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6118480 kB
Committed_AS: 11410784 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
Percpu: 3424 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 492084 kB
DirectMap2M: 7774208 kB
DirectMap1G: 1048576 kB
[alan@alan-laptop ~]$
$ grep -iE 'anon' /proc/meminfo
Active(anon): 2962828 kB
Inactive(anon): 1039836 kB
AnonPages: 2599436 kB
AnonHugePages: 0 kB
Q1。假设有零个“大页面”,你知道为什么 Active(anon) + Inactive(anon) 和 AnonPages 之间会有区别吗?
Q2。匿名记忆的最佳整体总结是什么?
我看着man proc,但它并没有告诉我太多:
Active(anon) %lu (自 Linux 2.6.28) [待记录]
Inactive(anon) %lu (自 Linux 2.6.28) [待记录]
[...]
AnonPages %lu(自 Linux 2.6.18 起):
映射到用户空间页表的非文件支持页。
$ uname -r # My kernel version
5.0.17-200.fc29.x86_64
我在 zoneinfo 中看到了同样的二分法:
$ getconf PAGESIZE
4096
$ grep -C0 -i anon /proc/zoneinfo
nr_inactive_anon 261105
nr_active_anon 742227
--
nr_isolated_anon 0
--
nr_anon_pages 651405
--
nr_anon_transparent_hugepages 0
--
nr_zone_inactive_anon 0
nr_zone_active_anon 0
--
nr_zone_inactive_anon 59018
nr_zone_active_anon 329082
--
nr_zone_inactive_anon 202087
nr_zone_active_anon 413145
$ grep -C0 -E "Node|zone[^_]" /proc/zoneinfo
Node 0, zone DMA
--
Node 0, zone DMA32
--
Node 0, zone Normal
--
Node 0, zone Movable
--
Node 0, zone Device
$ cat /proc/meminfo
MemTotal: 8042664 kB
MemFree: 1697716 kB
MemAvailable: 3108172 kB
Buffers: 186476 kB
Cached: 3046440 kB
SwapCached: 14580 kB
Active: 3830020 kB
Inactive: 1738252 kB
Active(anon): 2965992 kB
Inactive(anon): 1044420 kB
Active(file): 864028 kB
Inactive(file): 693832 kB
Unevictable: 276372 kB
Mlocked: 13560 kB
SwapTotal: 2097148 kB
SwapFree: 1465040 kB
Dirty: 7376 kB
Writeback: 0 kB
AnonPages: 2602632 kB
Mapped: 696488 kB
Shmem: 1670792 kB
KReclaimable: 164272 kB
Slab: 327948 kB
SReclaimable: 164272 kB
SUnreclaim: 163676 kB
KernelStack: 21408 kB
PageTables: 42976 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6118480 kB
Committed_AS: 14143048 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
Percpu: 3424 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 492084 kB
DirectMap2M: 7774208 kB
DirectMap1G: 1048576 kB
例如,使用 Firefox 的 uMatrix 扩展,可以看到第三方网站经常从多个 Google 拥有的域中提取内容。这些域包括 adservice.google.com(和 adservice.google.co.uk 等)。
adservice.google.com 有权访问为 google.com 设置的 cookie。我认为在这里更喜欢使用 google.com 的子域的唯一任何技术原因是能够跟踪登录到 Google Apps 的用户。
(我认为其他第三方域名如 googleads.g.doubleclick.com 或 pagead2.googlesyndication.com 没有这个能力。搜索,我发现还有一个域 googleadservices.com。另外,我发现一个帖子提到Doubleclick Floodlight 正在添加对 adservices.google.com 的调用。)
当然,这种“跟踪”可能包括在您的 Google 帐户中配置“广告偏好”的能力。但是,如果您的浏览器已经成功阻止第三方跟踪,那么您不会介意您的浏览器是否也阻止了 Google 用来检查您是否选择退出“个性化”广告的方法 :-)。
Firefox 已开始“阻止 Firefox 中已知第三方跟踪器的 cookie”。(我在某处读到这可能会逐步推出,但您绝对可以选择加入)。
点击博客文章查看详细文档,目前有一个默认阻止列表,但您也可以选择加入“2 级阻止列表。阻止所有检测到的跟踪器。某些网站或内容可能无法正确加载”。默认值为“1 级阻止列表(推荐)。允许一些跟踪器,因此更少的网站中断。”
问题:默认情况下,Firefox 是否会阻止 Google 提供的第三方广告通过您登录的 Google 帐户进行跟踪?或者,Firefox 是否被迫在默认设置中允许这样做,以避免破坏某些东西?
当然,这可能会导致“军备竞赛”,但这就是 Firefox 在这里所采取的性质。所以我明白任何答案只能告诉我目前的状态;他们无法保证 Google 将来能够做什么。
在我的 Debian 系统上,我有一个传统的仅限本地的“邮件”设置。软件包安装设置了一些合理的默认值。(也许它提示我接受设置;我不记得了)。
编辑:在 Debian 9 及更高版本中,exim4-daemon-light
不再作为 Debian“标准任务”(软件包集)的一部分安装。
这很有用的主要原因是cron
作业(以及at
作业)中的错误,这些错误作为本地“邮件”传递。
$ aptitude why exim4-daemon-light
i exim4 Depends exim4-daemon-light | exim4-daemon-heavy | exim4-daemon-custom
$ aptitude why exim4
i logrotate Depends cron | anacron | cron-daemon
i A cron Recommends exim4 | postfix | mail-transport-agent
Fedora Workstation 不包括功能正常的邮件设置。您必须选择安装它,并且您可能需要做一些额外的配置。
Ubuntu 基于 Debian。在 Ubuntu 桌面上,假设您已安装cron
(或at
),您是否有(工作的)本地邮件设置?
编辑:我猜想在 Debian 9 上你已经需要选择安装一个邮件系统,如果你想要一个,尽管有“推荐”。
(我写了一些 Ansible 的东西,它们在 Debian 系统上设置了 cron 作业。我希望最终将系统切换到 Ubuntu Desktop。所以我正在考虑我的脚本所做的假设)。