linux
linux deploy不启动安装,无法安装kali linux或者其它linux系统?
一、linux deploy不启动安装,无法安装kali linux或者其它linux系统?
应该是你在编译安装时没有把linuxdeploy-cli模块包含进去。按如下步骤解决问题:这样linuxdeploy_cli就会放在app/src/main/assets/env目录下然后再编译安装就可以了
二、或者……或者英文短语
标题:或者……或者英文短语:探索多种翻译选择
概述
在当今全球化的时代,英语作为国际通用语言越来越重要。然而,对于非英语母语的人而言,有时候在表达自己的时候可能会遇到困难。即使我们对某个特定的概念或词汇有清晰的理解,但是找到合适的英文短语来传达这一概念可能会让我们感到棘手。因此,在这篇博文中,我们将探讨一些常见的或者……或者英文短语,帮助大家应对这一日常挑战。
或者
或者是一个常用的中文词汇,有时用来表达二选一的选择。在英文中,有多种方式可以传达这个意思。以下是一些常见的表达方式:
- either...or...:这个短语用于提供两个选择,意思是“要么……要么……”。例如:You can either go to the party or stay at home tonight.(你今晚要么去参加聚会,要么呆在家里。)
- whether...or...:这个短语用于在两个选择之间做决策。例如:I haven't decided whether to take the train or drive to the city.(我还没有决定是坐火车还是开车去城市。)
- one thing or another:这个短语在描述两个或更多不确定的选择时使用。例如:We need to find a solution, one thing or another.(我们需要找到一个解决方案,或者这样或者那样。)
……或者英文短语
除了“或者”之外,还有其他一些常见的中文短语,需要对应的英文短语来传达相应的意思。以下是一些例子:
- 无论是否(whether or not):这个短语用于表示无论某件事是否发生。例如:I will attend the meeting whether or not I receive the invitation.(我无论是否收到邀请都会参加会议。)
- 有时候……有时候(sometimes...sometimes...):用于表达两个相互排斥的情况。例如:Sometimes I feel happy, sometimes I feel sad.(有时候我感到快乐,有时候我感到悲伤。)
- 无论如何(no matter what):表示不论发生何种情况,都会有相同的结果。例如:I will support you no matter what happens.(无论发生什么事情,我都会支持你。)
- 无论哪种方式(either way):用于表示对两种(或多种)可能的结果没有偏好。例如:You can take the bus or walk, it's up to you—either way, it will take about the same amount of time.(你可以坐公交或者步行,由你决定——不管怎样,花费的时间都差不多。)
总结
在英语中,有多种方式可以传达或者……或者的意思,每种方式都有其适用的语境和语义细微差别。为了更准确地表达自己,我们应该根据具体的语境选择最恰当的英文短语。本文介绍了一些常见的表达方式,希望对大家在翻译的时候能有所帮助。
三、linux安装Xvfb或者apt安装Xvfb?
使用rpm安装或使用源码包编译安装
四、linux硬盘怎么做ghost或者vhd?
要在Linux硬盘上创建Ghost或VHD镜像,可以使用类似dd或partclone的工具。
使用dd命令可以将整个硬盘的内容复制到一个文件中,然后再将这个文件转换为Ghost或VHD格式。
使用partclone命令可以选择性地复制硬盘的分区,然后将其转换为Ghost或VHD格式。这些工具需要在Linux终端中使用,需要小心谨慎地操作以确保数据不会丢失或损坏。
五、或者萨摩耶
您好,欢迎阅读本博客文章。本文将为大家介绍或者解答关于萨摩耶犬的相关问题。
萨摩耶犬的介绍
萨摩耶犬是一种非常受欢迎的犬种,它们拥有美丽的白色、浓密的毛发和友好的性格。这种犬只起源于西伯利亚,被用于拖曳雪橇和驯鹿,同时也是非常棒的家庭宠物。
萨摩耶犬的特点是外貌优美端庄,拥有一双蓝色的眼睛和迷人的微笑。它们的毛发浓密而厚实,具有耐寒性,因此在寒冷的气候下能更好地适应。作为一种中型犬,萨摩耶犬通常体格匀称,性格温和、忠诚而友善。
萨摩耶犬的性格特点
萨摩耶犬以其友好和忠诚的性格而闻名。它们通常非常喜欢与人类建立联系,并与家人保持亲密的关系。正因如此,萨摩耶犬常常被人们称为"微笑天使"。
与大多数犬类不同,萨摩耶犬很少表现出攻击性或敌意。相反,它们通常对陌生人友善,但也因此不是很适合作为守卫犬使用。由于萨摩耶犬天性喜欢社交,它们更适合作为家庭宠物来与人们共度时光。
萨摩耶犬的饲养和训练
尽管萨摩耶犬性格友善,但它们对训练并不总是特别乖巧。这些犬类倾向于较为固执,有时需要耐心和一致性的训练方法。
对于萨摩耶犬的训练来说,早期社交化和基本训练是非常重要的。与其他犬种一样,早期的社交化可以帮助它们适应各种环境和人际关系,从而成为友善和安全的家庭宠物。
在训练期间,使用正面的强化方法会更加有效。奖励萨摩耶犬的好行为,而不是惩罚不良行为。这样的训练方法将帮助它们建立与人类的积极关联,并增强它们与家人的亲密度。
萨摩耶犬的日常护理
萨摩耶犬的浓密毛发需要定期的护理。它们的双层毛发需要每周进行刷毛,以防止打结和过多的脱毛。夏季期间,这些犬种可能需要修剪、清洁和预防跳蚤等外部寄生虫。
此外,保持良好的口腔卫生和定期拜访兽医也是非常重要的。定期刷牙和检查口腔状况可以预防口腔疾病和疼痛。
与萨摩耶犬相处的需注意事项
要与萨摩耶犬建立良好的关系,有几个需要注意的事项:
- 给予萨摩耶犬充足的锻炼和活动空间。这些犬种需要足够的运动,以维持其健康和幸福。
- 与萨摩耶犬建立积极的互动和社交关系。与它们一起玩耍、训练和参加狗类活动,可以增强你们之间的纽带。
- 提供健康均衡的饮食,并严格控制食量。萨摩耶犬倾向于肥胖,所以正确的饮食管理对于它们的健康至关重要。
- 定期带萨摩耶犬到兽医处进行健康检查和疫苗接种。
- 确保给萨摩耶犬提供充足的水源,保持其身体水分充足。
结语
总而言之,萨摩耶犬是一种令人着迷的犬种,拥有美丽的外表和友好的性格。然而,饲养萨摩耶犬需要耐心、关爱和适当的训练。如果您能满足它们的生活需求,并与之建立良好的互动关系,那么萨摩耶犬将成为您忠诚、守护的伙伴。
感谢您阅读本篇关于萨摩耶犬的文章,希望对您有所帮助。如果您还有其他关于萨摩耶犬的问题或想分享您的经验,请在评论区留言,期待与您的交流!
六、php if怎么或者
在PHP编程中,条件语句是非常重要的一部分。条件语句使我们能够根据程序的不同情况执行不同的操作。其中一个常用的条件语句是if
语句。
if
语句用于在满足特定条件时执行特定的代码块。在这个语句中,我们可以使用不同的判断条件来决定程序的走向。
使用if
语句最常见的场景是判断一个条件是否为真,并执行相应的操作。在PHP中,我们可以使用一元运算符来判断一个变量或表达式的真假。
例如:
<?php
$age = 18; // 定义一个变量 $age,并赋值为 18
if ($age >= 18) {
echo "你已经成年了!";
}
?>
这个例子中,我们定义了一个变量 $age,并给它赋值为 18。接着,我们使用 if 语句判断变量 $age 是否大于等于 18。如果条件为真,则输出字符串 "你已经成年了!"。
除了简单的条件判断外,我们还可以通过if
语句来实现更多复杂的条件。比如使用逻辑运算符 或者 (||) 来判断多个条件是否满足。
以下是一个示例:
<?php
$username = "admin"; // 定义一个变量 $username,并赋值为 "admin"
$password = "123456"; // 定义一个变量 $password,并赋值为 "123456"
if ($username == "admin" || $password == "123456") {
echo "登录成功!";
}
?>
在这个例子中,我们定义了两个变量 $username 和 $password,并分别给它们赋了相应的值。然后,我们使用逻辑运算符 或者(||) 来判断两个条件是否满足。如果其中一个条件为真,则输出字符串 "登录成功!"。
除了使用逻辑运算符外,我们还可以在if
语句中使用条件语句的嵌套。这意味着可以在一个if
语句中嵌套另一个if
语句。
以下是一个示例:
<?php
$num = 10; // 定义一个变量 $num,并赋值为 10
if ($num > 0) {
if ($num % 2 == 0) {
echo "这个数是正偶数!";
} else {
echo "这个数是正奇数!";
}
}
?>
在这个例子中,我们定义了一个变量 $num,并给它赋值为 10。然后,我们使用两个if
语句来判断变量 $num 是否为正数和偶数。如果两个条件都满足,则输出字符串 "这个数是正偶数!"。否则,输出字符串 "这个数是正奇数!"。
总的来说,if
语句在PHP编程中是非常常用的。它可以帮助我们根据不同的条件来执行不同的操作。无论是简单的条件判断,还是复杂的条件嵌套,if
语句都能够满足我们的需求。
希望通过本文的介绍,你对if
语句在PHP中的使用有了更加深入的理解,并能够灵活运用到自己的编程中。
七、linux cpu或者内存过高什么解决?
往期精彩回顾:全面剖析Linux kernel的调试debug技术
图文并茂:如何从零实现一个系统调用内存管理干货推荐:巨页HugePage
嵌入式工程师为什么要学习Qt?它的几种开发方式?聊聊2022年嵌入式开发就业前景
嵌入式开发Linux驱动篇——平台总线介绍及项目实战
linux CPU 过高,怎么排查问题
CPU 指标解析
- 平均负载
- 平均负载等于逻辑 CPU 个数,表示每个 CPU 都恰好被充分利用。如果平均负载大于逻辑 CPU 个数,则负载比较重
- 进程上下文切换
- 无法获取资源而导致的自愿上下文切换
- 被系统强制调度导致的非自愿上下文切换
- CPU 使用率
- 用户 CPU 使用率,包括用户态 CPU 使用率(user)和低优先级用户态 CPU 使用率(nice),表示 CPU 在用户态运行的时间百分比。用户 CPU 使用率高,通常说明有应用程序比较繁忙
- 系统 CPU 使用率,表示 CPU 在内核态运行的时间百分比(不包括中断),系统 CPU 使用率高,说明内核比较繁忙
- 等待 I/O 的 CPU 使用率,通常也称为 iowait,表示等待 I/O 的时间百分比。iowait 高,说明系统与硬件设备的 I/O 交互时间比较长
- 软中断和硬中断的 CPU 使用率,分别表示内核调用软中断处理程序、硬中断处理程序的时间百分比。它们的使用率高,表明系统发生了大量的中断
查看系统的平均负载
$ uptime
10:54:52 up 1124 days, 16:31, 6 users, load average: 3.67, 2.13, 1.79
- 10:54:52 是当前时间;up 1124 days, 16:31 是系统运行时间;6 users 则是正在登录用户数。而最后三个数字依次是过去 1 分钟、5 分钟、15 分钟的平均负载(Load Average)。平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数
- 当平均负载高于 CPU 数量 70% 的时候,就应该分析排查负载高的问题。一旦负载过高,就可能导致进程响应变慢,进而影响服务的正常功能
- 平均负载与 CPU 使用率关系
- CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的
- I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高
- 大量等待 CPU 的进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高
【文章福利】小编推荐自己的Linux内核源码交流群:【869634926】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!前50名可进群领取!!!并额外赠送一份价值600的内核资料包(含视频教程、电子书、实战项目及代码)!!!
学习直通车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈
CPU 上下文切换
- 进程上下文切换:
- 进程的运行空间可以分为内核空间和用户空间,当代码发生系统调用时(访问受限制的资源),CPU 会发生上下文切换,系统调用结束时,CPU 则再从内核空间换回用户空间。一次系统调用,两次 CPU 上下文切换
- 系统平时会按一定的策略调用进程,会导致进程上下文切换
- 进程在阻塞等到访问资源时,也会发生上下文切换
- 进程通过睡眠函数挂起,会发生上下文切换
- 当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起
- 线程上下文切换:
- 同一进程里的线程,它们共享相同的虚拟内存和全局变量资源,线程上下文切换时,这些资源不变
- 线程自己的私有数据,比如栈和寄存器等,需要在上下文切换时保存切换
- 中断上下文切换:
- 为了快速响应硬件的事件,中断处理会打断进程的正常调度和执行,转而调用中断处理程序,响应设备事件
查看系统的上下文切换情况:
vmstat 和 pidstat。vmvmstat 可查看系统总体的指标,pidstat则详细到每一个进程服务的指标
$ vmstat 2 1
procs --------memory--------- --swap-- --io--- -system-- ----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 3498472 315836 3819540 0 0 0 1 2 0 3 1 96 0 0
--------
cs(context switch)是每秒上下文切换的次数
in(interrupt)则是每秒中断的次数
r(Running or Runnable)是就绪队列的长度,也就是正在运行和等待 CPU 的进程数.当这个值超过了CPU数目,就会出现CPU瓶颈
b(Blocked)则是处于不可中断睡眠状态的进程数
# pidstat -w
Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU)
06:43:23 PM UID PID cswch/s nvcswch/s Command
06:43:23 PM 0 1 0.00 0.00 java
06:43:23 PM 0 102 0.00 0.00 bash
06:43:23 PM 0 150 0.00 0.00 pidstat
------各项指标解析---------------------------
PID 进程id
Cswch/s 每秒主动任务上下文切换数量
Nvcswch/s 每秒被动任务上下文切换数量。大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换
Command 进程执行命令
怎么排查 CPU 过高问题
- 先使用 top 命令,查看系统相关指标。如需要按某指标排序则 使用
top -o 字段名
如:top -o %CPU
。-o
可以指定排序字段,顺序从大到小
# top -o %MEM
top - 18:20:27 up 26 days, 8:30, 2 users, load average: 0.04, 0.09, 0.13
Tasks: 168 total, 1 running, 167 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.5 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 32762356 total, 14675196 used, 18087160 free, 884 buffers
KiB Swap: 2103292 total, 0 used, 2103292 free. 6580028 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2323 mysql 20 0 19.918g 4.538g 9404 S 0.333 14.52 352:51.44 mysqld
1260 root 20 0 7933492 1.173g 14004 S 0.333 3.753 58:20.74 java
1520 daemon 20 0 358140 3980 776 S 0.333 0.012 6:19.55 httpd
1503 root 20 0 69172 2240 1412 S 0.333 0.007 0:48.05 httpd
---------各项指标解析---------------------------------------------------
第一行统计信息区
18:20:27 当前时间
up 25 days, 17:29 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 0.04, 0.09, 0.13 系统负载,三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值
Tasks:进程相关信息
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数
Cpu(s):CPU相关信息
%us:表示用户空间程序的cpu使用率(没有通过nice调度)
%sy:表示系统空间的cpu使用率,主要是内核程序
%ni:表示用户空间且通过nice调度过的程序的cpu使用率
%id:空闲cpu
%wa:cpu运行时在等待io的时间
%hi:cpu处理硬中断的数量
%si:cpu处理软中断的数量
Mem 内存信息
total 物理内存总量
used 使用的物理内存总量
free 空闲内存总量
buffers 用作内核缓存的内存量
Swap 内存信息
total 交换区总量
used 使用的交换区总量
free 空闲交换区总量
cached 缓冲的交换区总量
- 找到相关进程后,我们则可以使用
top -Hp pid
或pidstat -t -p pid
命令查看进程具体线程使用 CPU 情况,从而找到具体的导致 CPU 高的线程 - %us 过高,则可以在对应 java 服务根据线程ID查看具体详情,是否存在死循环,或者长时间的阻塞调用。java 服务可以使用 jstack
- 如果是 %sy 过高,则先使用 strace 定位具体的系统调用,再定位是哪里的应用代码导致的
- 如果是 %si 过高,则可能是网络问题导致软中断频率飙高
- %wa 过高,则是频繁读写磁盘导致的。
linux 内存
查看内存使用情况
- 使用 top 或者 free、vmstat 命令
# top
top - 18:20:27 up 26 days, 8:30, 2 users, load average: 0.04, 0.09, 0.13
Tasks: 168 total, 1 running, 167 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.5 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 32762356 total, 14675196 used, 18087160 free, 884 buffers
KiB Swap: 2103292 total, 0 used, 2103292 free. 6580028 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2323 mysql 20 0 19.918g 4.538g 9404 S 0.333 14.52 352:51.44 mysqld
1260 root 20 0 7933492 1.173g 14004 S 0.333 3.753 58:20.74 java
....
- bcc-tools 软件包里的 cachestat 和 cachetop、memleak
- achestat 可查看整个系统缓存的读写命中情况
- cachetop 可查看每个进程的缓存命中情况
- memleak 可以用检查 C、C++ 程序的内存泄漏问题
free 命令内存指标
# free -m
total used free shared buffers cached
Mem: 32107 30414 1692 0 1962 8489
-/+ buffers/cache: 19962 12144
Swap: 0 0 0
- shared 是共享内存的大小, 一般系统不会用到,总是0
- buffers/cache 是缓存和缓冲区的大小,buffers 是对原始磁盘块的缓存,cache 是从磁盘读取文件系统里文件的页缓存
- available 是新进程可用内存的大小
内存 swap 过高
Swap 其实就是把一块磁盘空间或者一个本地文件,当成内存来使用。swap 换出,把进程暂时不用的内存数据存储到磁盘中,并释放这些数据占用的内存。swap 换入,在进程再次访问这些内存的时候,把它们从磁盘读到内存中来
- swap 和 内存回收的机制
- 内存的回收既包括了文件页(内存映射获取磁盘文件的页)又包括了匿名页(进程动态分配的内存)
- 对文件页的回收,可以直接回收缓存,或者把脏页写回磁盘后再回收
- 而对匿名页的回收,其实就是通过 Swap 机制,把它们写入磁盘后再释放内存
- swap 过高会造成严重的性能问题,页失效会导致频繁的页面在内存和磁盘之间交换
- 一般线上的服务器的内存都很大,可以禁用 swap
- 可以设置 /proc/sys/vm/min_free_kbytes,来调整系统定期回收内存的阈值,也可以设置 /proc/sys/vm/swappiness,来调整文件页和匿名页的回收倾向
linux 磁盘I/O 问题
文件系统和磁盘
- 磁盘是一个存储设备(确切地说是块设备),可以被划分为不同的磁盘分区。而在磁盘或者磁盘分区上,还可以再创建文件系统,并挂载到系统的某个目录中。系统就可以通过这个挂载目录来读写文件
- 磁盘是存储数据的块设备,也是文件系统的载体。所以,文件系统确实还是要通过磁盘,来保证数据的持久化存储
- 系统在读写普通文件时,I/O 请求会首先经过文件系统,然后由文件系统负责,来与磁盘进行交互。而在读写块设备文件时,会跳过文件系统,直接与磁盘交互
- linux 内存里的 Buffers 是对原始磁盘块的临时存储,也就是用来缓存磁盘的数据,通常不会特别大(20MB 左右)。内核就可以把分散的写集中起来(优化磁盘的写入)
- linux 内存里的 Cached 是从磁盘读取文件的页缓存,也就是用来缓存从文件读写的数据。下次访问这些文件数据时,则直接从内存中快速获取,而不再次访问磁盘
磁盘性能指标
- 使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。
- 饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。
- IOPS(Input/Output Per Second),是指每秒的 I/O 请求数
- 吞吐量,是指每秒的 I/O 请求大小
- 响应时间,是指 I/O 请求从发出到收到响应的间隔时间
IO 过高怎么找问题,怎么调优
- 查看系统磁盘整体 I/O
# iostat -x -k -d 1 1
Linux 4.4.73-5-default (ceshi44) 2021年07月08日 _x86_64_ (40 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.08 2.48 0.37 11.71 27.80 507.24 88.53 0.02 1.34 14.96 0.90 0.09 0.10
sdb 0.00 1.20 1.28 16.67 30.91 647.83 75.61 0.17 9.51 9.40 9.52 0.32 0.57
------
rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s: 每秒对该设备的写请求被合并次数
r/s: 每秒完成的读次数
w/s: 每秒完成的写次数
rkB/s: 每秒读数据量(kB为单位)
wkB/s: 每秒写数据量(kB为单位)
avgrq-sz: 平均每次IO操作的数据量(扇区数为单位)
avgqu-sz: 平均等待处理的IO请求队列长度
await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
svctm: 平均每次IO请求的处理时间(毫秒为单位)
%util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率
- 查看进程级别 I/O
# pidstat -d
Linux 3.10.0-862.el7.x86_64 (8f57ec39327b) 07/11/2021 _x86_64_ (6 CPU)
06:42:35 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
06:42:35 PM 0 1 1.05 0.00 0.00 java
06:42:35 PM 0 102 0.04 0.05 0.00 bash
------
kB_rd/s 每秒从磁盘读取的KB
kB_wr/s 每秒写入磁盘KB
kB_ccwr/s 任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生
Command 进程执行命令
- 当使用 pidstat -d 定位到哪个应用服务时,接下来则需要使用 strace 和 lsof 定位是哪些代码在读写磁盘里的哪些文件,导致IO高的原因
$ strace -p 18940
strace: Process 18940 attached
...
mmap(NULL, 314576896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0f7aee9000
mmap(NULL, 314576896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0f682e8000
write(3, "2018-12-05 15:23:01,709 - __main"..., 314572844
) = 314572844
munmap(0x7f0f682e8000, 314576896) = 0
write(3, "\n", 1) = 1
munmap(0x7f0f7aee9000, 314576896) = 0
close(3) = 0
stat("/tmp/logtest.txt.1", {st_mode=S_IFREG|0644, st_size=943718535, ...}) = 0
- strace 命令输出可以看到进程18940 正在往文件 /tmp/logtest.txt.1 写入300m
$ lsof -p 18940
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 18940 root cwd DIR 0,50 4096 1549389 /
…
java 18940 root 2u CHR 136,0 0t0 3 /dev/pts/0
java 18940 root 3w REG 8,1 117944320 303 /tmp/logtest.txt
----
FD 表示文件描述符号,TYPE 表示文件类型,NODE NAME 表示文件路径
- lsof 也可以看出进程18940 以每次 300MB 的速度往 /tmp/logtest.txt 写入
linux 网络I/O 问题
当一个网络帧到达网卡后,网卡会通过 DMA 方式,把这个网络包放到收包队列中;然后通过硬中断,告诉中断处理程序已经收到了网络包。接着,网卡中断处理程序会为网络帧分配内核数据结构(sk_buff),并将其拷贝到 sk_buff 缓冲区中;然后再通过软中断,通知内核收到了新的网络帧。内核协议栈从缓冲区中取出网络帧,并通过网络协议栈,从下到上逐层处理这个网络帧
- 硬中断:与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个硬中断
- 软中断:为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,交给软中断来完成
网络I/O指标
- 带宽,表示链路的最大传输速率,单位通常为 b/s (比特 / 秒)
- 吞吐量,表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)吞吐量受带宽限制,而吞吐量 / 带宽,也就是该网络的使用率
- 延时,表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同含义。比如,它可以表示,建立连接需要的时间(比如 TCP 握手延时),或一个数据包往返所需的时间(比如 RTT)
- PPS,是 Packet Per Second(包 / 秒)的缩写,表示以网络包为单位的传输速率。PPS 通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发(即 PPS 可以达到或者接近理论最大值)。而基于 Linux 服务器的转发,则容易受网络包大小的影响
- 网络的连通性
- 并发连接数(TCP 连接数量)
- 丢包率(丢包百分比)
查看网络I/O指标
- 查看网络配置
# ifconfig em1
em1 Link encap:Ethernet HWaddr 80:18:44:EB:18:98
inet addr:192.168.0.44 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::8218:44ff:feeb:1898/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3098067963 errors:0 dropped:5379363 overruns:0 frame:0
TX packets:2804983784 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1661766458875 (1584783.9 Mb) TX bytes:1356093926505 (1293271.9 Mb)
Interrupt:83
-----
TX 和 RX 部分的 errors、dropped、overruns、carrier 以及 collisions 等指标不为 0 时,
通常表示出现了网络 I/O 问题。
errors 表示发生错误的数据包数,比如校验错误、帧同步错误等
dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer,但因为内存不足等原因丢包
overruns 表示超限数据包数,即网络 I/O 速度过快,导致 Ring Buffer 中的数据包来不及处理(队列满)而导致的丢包
carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等
collisions 表示碰撞数据包数
- 网络吞吐和 PPS
# sar -n DEV 1
Linux 4.4.73-5-default (ceshi44) 2022年03月31日 _x86_64_ (40 CPU)
15时39分40秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
15时39分41秒 em1 1241.00 1022.00 600.48 590.39 0.00 0.00 165.00 0.49
15时39分41秒 lo 636.00 636.00 7734.06 7734.06 0.00 0.00 0.00 0.00
15时39分41秒 em4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
15时39分41秒 em3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
15时39分41秒 em2 26.00 20.00 6.63 8.80 0.00 0.00 0.00 0.01
----
rxpck/s 和 txpck/s 分别是接收和发送的 PPS,单位为包 / 秒
rxkB/s 和 txkB/s 分别是接收和发送的吞吐量,单位是 KB/ 秒
rxcmp/s 和 txcmp/s 分别是接收和发送的压缩数据包数,单位是包 / 秒
- 宽带
# ethtool em1 | grep Speed
Speed: 1000Mb/s
- 连通性和延迟
# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=1 ttl=56 time=53.9 ms
64 bytes from 14.215.177.38: icmp_seq=2 ttl=56 time=52.3 ms
64 bytes from 14.215.177.38: icmp_seq=3 ttl=56 time=53.8 ms
64 bytes from 14.215.177.38: icmp_seq=4 ttl=56 time=56.0 ms
- 统计 TCP 连接状态工具 ss 和 netstat
[root@root ~]$>#ss -ant | awk '{++S[$1]} END {for(a in S) print a, S[a]}'
LISTEN 96
CLOSE-WAIT 527
ESTAB 8520
State 1
SYN-SENT 2
TIME-WAIT 660
[root@root ~]$>#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
CLOSE_WAIT 530
ESTABLISHED 8511
FIN_WAIT2 3
TIME_WAIT 809
网络请求变慢,怎么调优
- 高并发下 TCP 请求变多,会有大量处于 TIME_WAIT 状态的连接,它们会占用大量内存和端口资源。此时可以优化与 TIME_WAIT 状态相关的内核选项
- 增大处于 TIME_WAIT 状态的连接数量 net.ipv4.tcp_max_tw_buckets ,并增大连接跟踪表的大小 net.netfilter.nf_conntrack_max
- 减小 net.ipv4.tcp_fin_timeout 和 net.netfilter.nf_conntrack_tcp_timeout_time_wait ,让系统尽快释放它们所占用的资源
- 开启端口复用 net.ipv4.tcp_tw_reuse。这样,被 TIME_WAIT 状态占用的端口,还能用到新建的连接中
- 增大本地端口的范围 net.ipv4.ip_local_port_range 。这样就可以支持更多连接,提高整体的并发能力
- 增加最大文件描述符的数量。可以使用 fs.nr_open 和 fs.file-max ,分别增大进程和系统的最大文件描述符数
- SYN FLOOD 攻击,利用 TCP 协议特点进行攻击而引发的性能问题,可以考虑优化与 SYN 状态相关的内核选项
- 增大 TCP 半连接的最大数量 net.ipv4.tcp_max_syn_backlog ,或者开启 TCP SYN Cookies net.ipv4.tcp_syncookies ,来绕开半连接数量限制的问题
- 减少 SYN_RECV 状态的连接重传 SYN+ACK 包的次数 net.ipv4.tcp_synack_retries
- 加快 TCP 长连接的回收,优化与 Keepalive 相关的内核选项
- 缩短最后一次数据包到 Keepalive 探测包的间隔时间 net.ipv4.tcp_keepalive_time
- 缩短发送 Keepalive 探测包的间隔时间 net.ipv4.tcp_keepalive_intvl
- 减少 Keepalive 探测失败后,一直到通知应用程序前的重试次数 net.ipv4.tcp_keepalive_probes
文章参考:https://mp.weixin.qq.com/s/Y2-so8CFfXv5bM4sN4aJSw
八、linux系统可以进PE安装吗,或者用GHOST?
呃。
pe和ghost都不是在Linux系统中运行的,而是在开机时单独进入的,有的pe整合ghost,可以在pe里操作ghost,也可以直接在dos下进入ghost,都行。九、cpu或者gpu npu
技术专题:CPU或GPU与NPU
随着人工智能技术的不断发展,我们越来越依赖各种电子设备,这些设备都拥有各自的处理器,例如CPU、GPU和NPU。今天,我们将详细讨论这三种处理器各自的特点及其应用场景。
CPU和GPU的区别
首先,让我们了解一下CPU和GPU。CPU(中央处理器)是我们电脑和电子设备中最基本的处理器,它的性能和运算速度决定了设备的整体性能。然而,CPU由于其结构的原因,通常在处理大量数据和复杂的计算时显得力不从心。相比之下,GPU(图形处理器)专为处理大规模并行计算而设计,因此它在处理图形渲染、视频编码等任务时具有出色的性能。
NPU的优势
那么,NPU(神经网络处理器)与CPU和GPU有什么不同呢?NPU是专门为执行神经网络算法而设计的处理器。由于神经网络算法的特点是需要大量的并行计算和低功耗,而NPU正好具备这两方面的优势。它不仅能大大提高运算速度,而且功耗更低,这对于电池供电的设备来说尤为重要。
应用场景
在人工智能领域,NPU的应用场景非常广泛。例如,在智能语音助手、自动驾驶、人脸识别等领域,NPU都能发挥出其强大的性能。此外,NPU还被广泛应用于医疗设备中,如医疗影像诊断设备、远程手术机器人等。这些设备需要处理大量的图像和视频数据,而NPU能够快速准确地处理这些数据,从而提高诊断和手术的准确性和效率。
总结
综上所述,CPU、GPU和NPU各有其特点和优势。CPU适合处理基本的计算任务,GPU擅长处理大规模并行计算任务,而NPU则专门为执行神经网络算法而设计。随着人工智能技术的不断发展,NPU将在未来的电子设备中扮演越来越重要的角色。了解并选择适合自己设备的处理器类型,将有助于我们更好地利用这些电子设备,提高我们的工作效率和生活质量。
十、梁洁演的电视剧或者电影或者综艺
梁洁演的电视剧、电影和综艺节目作品介绍
梁洁作为一位才华出众的演员,曾经在众多电视剧、电影以及综艺节目中展现了她的演技和魅力。在这篇文章中,我们将为大家介绍一些梁洁演过的知名作品。
1. 电视剧
梁洁在多部热门电视剧中饰演过各种类型的角色,展现了她的演技与个人魅力。
《欢乐颂》:这部剧是一部聚焦五位都市女性生活的作品,梁洁在其中饰演了聪明可爱的胶片机器人小包子,她的表演获得了观众的一致好评。
《太平洋保险》:梁洁在该剧中饰演了一位职场女性,她的刻画细腻入微,使观众看到了一个坚强而又脆弱的形象。
《如果岁月可回头》:这是一部治愈系的剧集,梁洁在剧中饰演了一个乐观开朗的女主角,她的演技让人印象深刻。
2. 电影
除了电视剧,梁洁还在多部电影中展现了出色的演技,赢得了观众的喜爱。
《岁月神偷》:该片讲述了一段发生在上世纪80年代的青春故事,梁洁在片中饰演了一个乐观开朗的女孩,她的表演让人感到温暖。
《心迷宫》:这是一部心理悬疑片,梁洁在片中扮演了一个因为意外失忆的女主角,她娴熟的演技给观众留下了深刻的印象。
《功夫瑜伽》:这是一部动作喜剧片,梁洁在片中与成龙合作,饰演了一个聪明机智的女特工,她的精湛演出为影片增色不少。
3. 综艺节目
梁洁也积极参与了一些综艺节目,展示了她的多才多艺和娱乐实力。
《奔跑吧兄弟》:这是一档户外竞技真人秀节目,梁洁参与其中,展现了她的体力和智慧,赢得了观众的喜爱。
《我是歌手》:这是一档音乐竞技真人秀节目,梁洁作为参赛选手之一,通过高水平的演唱获得了观众的赞赏。
《偶像练习生》:作为一档培养新人偶像的综艺节目,梁洁作为导师之一,用她的经验与知识指导年轻选手的成长。
通过以上几部作品的介绍,我们可以看出梁洁作为一位优秀的演员,在电视剧、电影和综艺节目中都展现了她出色的演技和与众不同的魅力。期待梁洁在未来的作品中给我们带来更多惊喜!
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...