Linux 性能测试与分析

2023-05-16

源自
http://blog.sina.com.cn/s/blog_71ad0d3f01019uzl.html

Linux 性能测试与分析

Revision History

 

Version

Date

Author

Description

1.0

2011/5/26

dengwu@taobao.com

初稿

1.1

2011/6/23

dengwu@taobao.com

添加CPU分析

1.2

2012/2/20

dengwu@taobao.com

添加MEM,IO分析

1.3

2012/2/23

dengwu@taobao.com

更新工作原理

1.4

2012/2/25

dengwu@taobao.com

添加中断分析

1.5

2012/2/28

dengwu@taobao.com

添加网络分析

       性能测试简介

性能测试的过程就是找到系统瓶颈的过程。

 Linux <wbr>性能测试与分析

 

 

性能测试(包括分析和调优)的过程就是在操作系统的各个子系统之间取得平衡的过程。

操作系统的各个子系统包括:

Ø  CPU

Ø  Memory

Ø  IO

Ø  Network

 

他们之间高度依赖,互相影响。比如:

1.     频繁的磁盘读写会增加对内存的使用

2.     大量的网络吞吐,一定意味着非常可观的CPU利用率

3.     可用内存的减少可能增加大量的swapping,从而使系统负载上升甚至崩溃

       应用程序类型

性能测试之前,你首先需要判断你的应用程序是属于那种类型的,这可以帮助你判断哪个子系统可能会成为瓶颈。

 

通常可分为如下两种:

 

CPU bound –这类程序,cpu往往会处于很高的负载,当系统压力上升时,相对于磁盘和内存,往往CPU首先到达瓶颈。Web server,mailserver以及大部分服务类程序都属于这一类。

 

I/O bound –这类程序,往往会频繁的访问磁盘,从而发送大量的IO请求。IO类应用程序往往利用cpu发送IO请求之后,便进入sleep状态,从而造成很高的IOWAIT。数据库类程序,cache服务器往往属于这种类型。

       CPU

Linux <wbr>性能测试与分析

 

3.1     性能瓶颈

3.1.1       运算性能瓶颈

作为计算机的计算单元,其运算能力方面,可能出现如下瓶颈:

 

1.  用户态进程CPU占用率很高

2.  系统态(内核态)CPU占用率很高

 

测试CPU的运算性能,通常是通过计算圆周率来测试CPU的浮点运算能力和稳定性。据说PentiumCPU的一个运算bug就是通过计算圆周率来发现的。圆周率的计算方法,通常是计算小数点后104万位,通过比较运算时间来评测CPU的运算能力。

 

常用工具:

1.       SUPER PI(π)

2.       Wprime  与SuperPI不同的是,可以支持多核CPU的运算速度测试

3.       FritzChess  一款国际象棋测试软件,测试每秒钟可运算的步数

 

突破CPU的运算瓶颈,一般只能靠花钱。比如提高时钟频率,提高L1,L2 cache容量或不断追求新一代的CPU架构:

 

Core  -> Nehalem(E55x,如r710,dsc1100) ->  Westmere –>  SandyBridge

3.1.2       调度性能瓶颈

CPU除了负责计算之外,另一个非常重要的功能就是调度。在调度方面,CPU可能会出现如下性能瓶颈:

 

1.     Load平均值超过了系统可承受的程度

2.     IOWait占比过高,导致Load上升或是引入新的磁盘瓶颈

3.     Context Switch过高,导致CPU就像个搬运工一样,频繁在寄存器(CPU Register)和运行队列(runqueue)之间奔波

4.     硬中断CPU占比接近于100%

5.     软中断CPU占比接近于100%

 

超线程

超线程芯片可以使得当前线程在访问内存的间隙,处理器可以使用它的机器周期去执行另外一个线程。一个超线程的物理CPU可以被kernel看作是两个独立的CPU。

 

3.2     典型监控参数

图1:top

Linux <wbr>性能测试与分析

图2:mpstat

 Linux <wbr>性能测试与分析

3.2.1       参数含义

Ø  Load

Load是指CPU所有内核正在处理的任务加上处于等待队列中的进程数之和。

 

处于等待队列(run queue)中的进程包括TASK_RUNNING 和TASK_UNINTERRUPTIBLE两种状态的任务:

Ø  处于可运行状态的进程

Ø  等待不可中断任务的进程

 

在一个双核的系统中,如果两个进程正在执行,有四个进程处于run quque当中,那么load就是6

 

Vmstat 中 r 指的就是run queue中的进程数目

 Linux <wbr>性能测试与分析

对比一下同一时刻top统计出来的load

 Linux <wbr>性能测试与分析

Ø  Nice%

用户进程空间内,通过调用nice或setpriority系统调用改变过优先级的进程的CPU占用率

Ø  Iowait%

CPU等待IO操作的时间

Ø  Idle%

CPU空闲时间

Ø  Intr/s

每秒钟处理的中断数

Ø  Hi%

服务于IRQs的时间占比

Ø  Si%

服务于Soft IRQs的时间占比

Ø  St%

关于st的解释,在IBM的一份文档里,有一段描述:

IBM’s definition of steal time is actually pretty good:
Steal time is the percentage of time a virtual CPU waits for a realCPU while the hypervisor is servicing another virtualprocessor.

 

 

3.3     工作原理

为了更好地理解CPU的性能参数,需要了解下面几个概念


 

 

 

3.3.1       进程及进程调度算法

1.     什么是线程

 

图3:进程和线程的数据结构

 Linux <wbr>性能测试与分析

从性能测试角度来看,我倾向于这样理解线程:

1.     线程和进程的确不同,因为他们可以共享进程的资源,如地址空间等。因此在上下文切换的过程中线程可能会产生较小的性能损耗。

2.     站在调度器(scheduler)的角度来说,线程就是一个进程,或者说是一个轻量级的进程(Light WeightProcess)。Kernel实际上就是通过轻量级的进程来支持多线程应用程序的。我们经常用的线程开发库pthread就是通过将轻量级进程和线程关联起来,来实现的。这样既可以实现资源的共享,又可以让每个线程被调度器独立调度。

 

2.     进程的状态

Ø  可运行状态(TASK_RUNNING)

Ø  不可中断的等待状态(TASK_UNINTERRUPTIBLE)

Ø  暂停状态(TASK_STOPPED)

Ø  跟踪状态(TASK_TRACED)

Ø  僵死状态(EXIT_ZOMBIE)

 

问题 Wait io%包含在idle%当中吗?

从下面top实例可以看出,wait io%不属于idle%,等IO的过程被叫做uninterruptible sleep

 

Cpu1 2.7%us,  3.0%sy, 0.0%ni,  3.7%id, 89.7%wa, 0.0%hi,  1.0%si,  0.0%st

 

3.3.2       上下文切换(Context Switches)
3.3.3       运行队列(Run Queue)
3.3.4       硬中断

性能测试中关注的中断,主要由IO设备所产生,如键盘的一次按键,网卡接收报文等等。

 

IRQ

IO设备所发出的IRQ(Interrupt ReQuest)请求叫做中断请求(可屏蔽中断)

 

每个能够发出中断的IO设备都有一个IRQ输出线(部分高级千兆网卡,和大部分万兆网卡都多条IRQ输出线)。每条IRQ输出线和可编程中断控制器(ProgrammableInterrupt Controller)引脚相关联。

 

每个IRQ输出线的中断信号,只能被一个CPU core处理,IRQ线从0开始编号。

 

 

如何观察IRQ的状态:

 Linux <wbr>性能测试与分析

 

问题3:大量的中断,是否会使CPU响应中断成为瓶颈呢?

 

答案是一般不会,中断享有最高的优先级,有硬件中断发生时,CPU会立即停下手中的工作,响应中断,并调用相应中断处理程序。瓶颈一般发生在中断处理程序。

 

IRQ硬件中断是否意味着不会出现瓶颈呢?瓶颈有可能出现在中断的服务例程中,看下面的流程图:

 

IRQ在多处理器上的分发:

遵循对称多处理模型,每个IO中断的处理时间片是相同的,均匀分配。Kernel通过中断向量表来将中断信号发送到特定的CPU上去。

 

在必要的时候,Linux2.6利用kirqd的内核线程来纠正IRQ在CPU上的分配。kirqd线程周期性的执行扫描每个CPU处理的中断个数,发现不均衡时重新调整CPU的负载。

 

下面的案例表明,IRQ在CPU上的分配不够均衡,因为8个CPU,只有4个CPU有负载:

 Linux <wbr>性能测试与分析

3.3.5       软中断

Linux kernel通过一种软件的方法(可延迟函数)来模拟硬件的中断模式,通常叫做软中断(softirq)。

 

Linux 中的软中断

 

软中断

说明

NET_TX_SOFTIRQ

把数据包传送到网卡

NET_RX_SOFTIRQ

从网卡接收数据包

 

从网卡到IP层的数据处理,是有以上软中断来处理的。

 

软中断是否可能出现瓶颈呢?

Ksoftirqd

每个CPU都有自己的ksoftirqd/n(n为CPU的逻辑号码)。每个ksoftirqd/n内核线程都运行ksoftirqd()函数来处理自己的中端队列上的软中断。

 

当网卡和IP层数据包处理很繁忙时,中断处理程序会出现瓶颈.下图可看出ksoftirqd出现了瓶颈:

 Linux <wbr>性能测试与分析

 

 

软中断处理出现瓶颈,ksoftirqd可通过cpu的 si%的来观察到。

 Linux <wbr>性能测试与分析

       内存

Linux <wbr>性能测试与分析

4.1      虚拟内存

 Linux <wbr>性能测试与分析



Linuxkernel使用虚拟内存机制来利用磁盘对内存的空间进行扩展。Kernel将暂时不用的内存写入到磁盘从而释放出更多的可用内存。当这些数据再次被使用时,会被重新加载到内存当中。用作虚拟内存的磁盘空间被称作swapspace。

 

对硬盘的读写,相对于内存来说速度要慢许多,因此使用了虚拟内存的程序,速度也会相应变慢。

 

对虚拟内存的使用,往往被认为是内存出现瓶颈的标志。

 

问题n:swap空间被使用是否意味着出现了内存瓶颈?

 Linux <wbr>性能测试与分析

Kswapd和Page Frame Reclaim Algorithm

当系统的可用内存低于阈值时(page_low,page_high),kswpad服务比那开始扫描可以被swapout的空间,并试图一次swap out 32个内存页。该过程不断重复知道可用内存达到page_high水平线位置。被swapout的内存也被放在swap spae当中。

 

Kswapd回收内存的算法被称作Page Frame ReclaimAlgorithm,一下类型的内存也是可以被回收的:

Swappable – anonymous memory pages

Syncable – pages backed by a disk file

Discardable – static pages, discarded pages

 

内存的回收采用LRU策略,最近不被经常使用的内存页,应该首先被回收。

 

现在来回答上面的问题:

swap空间被利用恰恰说明了Linux的内存使用的合理性,并不能表示内存出现了瓶颈。

 

对Swap空间的换入换出的速率是表征内存出现瓶颈的重要标志。


 

 

 

       IO

Linux <wbr>性能测试与分析

IO 子系统架构图

Linux <wbr>性能测试与分析

5.1      页高速缓存

页高速缓存是Linuxkernel使用的主要的磁盘缓存技术。磁盘高速缓存是一种软件机制,它允许系统把存放在磁盘上的一些数据保留在内存中,以便对那些数据的再次访问不再需要访问磁盘。

 

Kernel在读取磁盘时,如果数据页不再高速缓存当中,就会将读出的磁盘数据填充到页高速缓存当中。通过将数据页在高速缓存当中驻留,从而使进程再使用该页时不再需要访问磁盘。

 

Kernel在把一页数据写到磁盘之前,首先检查页是否已经在高速缓存当中,如果不在,首先会将页数据填充到高速缓存当中。更新到磁盘I/O的动作不是立即进行的,而是会有一点延时,从而使进程有机会对写入的数据进一步修改,这就是内核的延迟写操作。

 

脏数据的同步

进程对页高速缓冲区中的数据修改之后,数据页被标记为”脏数据”,即把PG_Dirty标志置位。Linux系统允许对脏数据写入磁盘块设备的延迟操作,被认为是显著增加了系统I/O能力的一种机制。

 

在下列条件下,脏数据写入磁盘:

1.     页高速缓存空间不足

2.     变脏以来,太久没有过更新

3.     进程通过系统调用(sync(),fsync(),fdataasync())来强行对将对快设备的更新同步到磁盘。Msync系统调用用来将内存映射状态下的脏数据刷新到磁盘。

 

Pdflush

Pdflush内核线程负责定期扫描缓存中的脏数据,并在合适的时候将其更新到磁盘。定时器一般是500分之一秒,可以通过/proc/sys/vm/dirty_writeback_centisecs文件调整这个值。

 

Pdflush线程的个数是根据情况动态调整的:

1.     至少有2个,最多有8个pdflush线程。(通过/proc/sys/vm/nr_pdflush_threads参数)可以修改这些变量的值。

2.     如果最近1s内,没有空闲的pdflush线程,就创建新的。

3.     如果pdflush的空闲时间超过了1s,就删除一个pdflush。

 

 

 

Buffer/cache

Cache - 全称pagecache。当进程发起对磁盘的读写操作时,主要用来在内存中缓存磁盘中的数据,与磁盘的同步由pdflush负责。

 

Buffer – 全称block buffer。Block buffer中存放的是bio结构体数据。BIO 结构体是VFS和block layer之间的接口。通俗的理解,Block buffer是page cache和磁盘驱动器之间打交道的一层缓存。

 

系统页高速缓存的使用情况可以通过buffer/cache的监控数据来分析。

从文件读写角度来看,buffer多用于缓存文件的管理信息,如目录位置,inode信息等。Cache缓存的是文件内容。

由于CPU不能直接处理外设上的数据,buffer用来标记那些文件的位置等描述信息。Cache主要目的是增加传输性能,用于缓存文件内容。

 Linux <wbr>性能测试与分析

 

从操作系统的工作原理来讲,buffer/cache的目的主要是为了减少MPFs,增加MnPFs。

 

MPF

Kernel要读取数据的时候,首先会查找CPU 的cache然后是物理内存,如果没有会发出一个major pagefault(MPF)。一个MPF可以看作是kernel发送的一个请求,将磁盘数据加载到内存。

 

MnPF

当磁盘数据被加载到内存当中,kernel再次读取时,会发出一个minor page fault(MnPF)。

 

下面的例子展示了第一次访问一个程序和第二次访问同样的程序所产生的MPF和MnPF。

 

/usr/bin/time -v java

Major (requiring I/O) page faults: 103

Minor (reclaiming a frame) page faults: 2356

 

第二次访问:

/usr/bin/time -v java

Major (requiring I/O) page faults: 0

Minor (reclaiming a frame) page faults: 2581

 

下图展示了磁盘高速缓存过程

 Linux <wbr>性能测试与分析

Linux <wbr>性能测试与分析

 

 

强行同步全部页高速缓存

此处介绍强行将所有内存缓存数据同步到磁盘,并演示释放后的free输出结果

 

Free pagecache

Echo 1 > /proc/sys/vm/drop_caches;

 

Free dentries and inodes

Echo 2 > /proc/sys/vm/drop_caches;

 

Free pagecache and dentries and inodes

Echo 3 > /proc/sys/vm/drop_caches;

 

 

Direct I/O

有一些更复杂的程序(通常称为自缓存应用程序),更愿意自己控制I/O的传输过程(),通过将O_DIRECT标志位置位,I/O数据的传送便绕过了页高速缓存。

 

出于以下原因,系统页高速缓存技术是有害的:

1.     处理页高速缓存的多余指令,降低了read(),write()的效率

2.     Read(),write()系统调用不是在磁盘和用户空间直接传送,而是分成两步:在磁盘和内核空间,在内核空间到用户空间。

 

与页高速缓存相关的系统参数

1.     /proc/sys/vm/dirty_background_ratio

表示系统可用内存中,最高可用于存储 dirty 数据的百分比。The maximum of percentageof((cache+free)-mapped)。缺省10%。

 

2.     /proc/sys/vm/dirty_ratio

表示进程产生的脏数据到达系统整体内存的百分比,此时触发pdflush进程把数据回写到磁盘。缺省设置40.

 

3.     /proc/sys/vm/dirty_expire_centisecs

表示脏数据在内存中驻留超过该值,pdflush会将该数据回写到磁盘。缺省是3000。

 

4.     /proc/sys/vm/dirty_writeback_centisecs

表示pdflush周期性间隔多久处理脏数据回写。

       网络

Linux <wbr>性能测试与分析

6.1     性能瓶颈标识

6.1.1       through put出现瓶颈


 

 

sar –n DEV 1

Linux <wbr>性能测试与分析

6.1.2       网卡出现丢包

通常情况下,网络性能测试的极限是不能出现丢包。

 

 

下表是千兆网卡的丢包率情况:

 Linux <wbr>性能测试与分析

6.1.3       网卡出现错误(errors)
6.1.4       Socket buffer出现泄露

观察方法:sudo cat /proc/slabinfo |grep skb

 

6.1.5       CPU的软中断处理程序成为瓶颈

Linux <wbr>性能测试与分析

6.2     认识你的网卡

此处贴图千兆网卡和万兆网卡的lspci和ethtool eth0的对比。

千兆 Broadcom网卡

 Linux <wbr>性能测试与分析

万兆Intel网卡

 Linux <wbr>性能测试与分析

Linux <wbr>性能测试与分析

 

 

 

 

6.3     监控网络流量

6.4     测试工具

iperf - 网络性能评测工具

netperf - TCP/IP层的网络测试工具

packet gen – 集成在内核的IP层发包工具

TC – Traffic Control.流量控制

tsung – 分布式并发压力测试工具

httpsender – http压力测试工具

synfloodEx – TCP攻击工具

udpflood – UDP攻击工具

6.5     调整你的进程最大连接数

通过以下方法可以修改进程的最大连接数到60000

sudo vi /etc/security/limits.conf

* soft nofile 60000

* hard nofile 60000

6.6     重用你的time_wait状态的连接

sudo vi /etc/sysctl.conf

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

sudo sysctl -p 生效

6.7     如何利用TrafficControl进行流量控制

每个网卡接口(networkinterface),都有一个hook点,即允许用户添加一个策略(qdisk),默认的处理策略是FIFO。

6.7.1       利用TC修改网络延时

添加策略:sudo tc qdisc add dev eth0 root netem delay 1000ms

删除策略:sudo tc qdisc del dev eth0 root netem delay 1000ms

 

6.7.2       利用TC控制丢包率

添加策略:sudo tc qdisc add dev eth0 root netem loss 10%

删除策略:sudo tc qdisc del dev eth0 root netem loss 10%

 

6.7.3       利用TC控制上行或下行带宽

控制上行速度

sudo tc qdisc add dev eth0 root tbf rate 5800kbit latency 50msburst 1540

 

sudo tc qdisc del dev eth0 root tbf rate 5800kbit latency 50msburst 1540

 

在本机上限制对10.10.10.21的下载带宽

sudo tc qdisc add dev eth0 root handle 2: htb

sudo tc class add dev eth0 parent 2: classid 2:1 htb rate5120kbit

sudo tc class add dev eth0 parent 2:1 classid 2:21 htb rate5120kbit ceil 6000kbit burst 100k

sudo tc qdisc add dev eth0 parent 2:21 handle 21: sfq

sudo tc filter add dev eth0 parent 2:0 protocol ip prio 4 u32match ip dst 10.10.10.21 flowid 2:21

 

更多TC资料:

http://blog.edseek.com/~jasonb/articles/traffic_shaping/

6.8     Tsung控制客户端集群发送http请求

http://sps.corp.alimama.com/sdt/testdoc/基础平台/cdn/压力测试工具Tsung.pptx

6.9     Httpsender发送http请求,通过md5验证数据一致性

6.10 Synflood packet gen发送大量报文

6.11 UDPFlood发送大量udp报文


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 性能测试与分析 的相关文章

  • Locale.getDefault() 始终返回 en

    unix 机器上的服务器始终使用 en 作为默认区域设置 以下是区域设置输出 LANG en US LC CTYPE C LC NUMERIC C LC TIME C LC COLLATE C LC MONETARY C LC MESSAG
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • 跟踪 Linux 程序中活跃使用的内存

    我想跟踪各种程序在特定状态下接触了多少内存 例如 假设我有一个图形程序 最小化时 它可能会使用更少的内存 因为它不会重新绘制窗口 这需要读取图像和字体并执行大量库函数 这些对象仍然可以在内存中访问 但实际上并没有被使用 类似的工具top它们
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • GLIBCXX_3.4.26 未找到在 BeagleBone 上运行交叉编译的程序

    我有以下程序 include
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数
  • 从 Python 调用 PARI/GP

    我想打电话PARI GP http pari math u bordeaux fr dochtml gpman html仅从Python计算函数nextprime n 对于不同的n是我定义的 不幸的是我无法得到帕里蟒蛇 http code
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • Pyaudio 安装错误 - “命令‘gcc’失败,退出状态 1”

    我正在运行 Ubuntu 11 04 Python 2 7 1 并想安装 Pyaudio 于是我跑了 sudo easy install pyaudio 在终端中 进程退出并显示以下错误消息 Searching for pyaudio Re
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少

随机推荐

  • xampp 访问出现New XAMPP security concept

    New XAMPP security concept Access to the requested directory is only available from the local network This setting can b
  • Runtime error 216 at xxx 故障解决一例

    故障现象 xff1a 部分Delphi项目在win7开发机上不能运行了 xff0c 提示Runtime error 216 at xxx错误信息 xff0c 但是将出错的EXE文件复制到别的win7和xp下 xff0c 均运行正常 解决办法
  • 启用了TRACE 和TRACK HTTP 方法,如何禁用?

    http wenku baidu com view 557d761ea8114431b90dd873 html http wenku baidu com view de1f4ad2195f312b3169a50d html http www
  • IP地址表示方法及网段子网掩码写法

    A类IP段 0 0 0 0 到127 255 255 255 B类IP段 128 0 0 0 到191 255 255 255 C类IP段 192 0 0 0 到223 255 255 255 XP默认分配的子网掩码每段只有255或0 xf
  • ftp连接错误——服务器发回了不可路由的地址。使用服务器地址代替。

    设置filezilla客户端的连接参数 选中某一连接项高级 加密 只使用普通ftp传输设置 传输模式 主动重新连接
  • VNC内网穿透--MAC控制windos

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言SSH和VNCSSHSSH服务端SSH客户端 VNCVNC serverVNC viewer 内网穿透花生壳 前言 翻出很久
  • Excel 2016双击文件打开为空白的解决办法

    故障描述 xff1a 安装Office 2016后 xff0c 双击EXCEL文件打开后显示为空白 解决办法 xff1a 开始 运行 regedit 修改HKEY CLASSES ROOT Excel Sheet 12 shell Open
  • Linux 修改远程默认端口(22)

    如题 xff1a 在此前 xff0c 建议先查看redhat的release版本 xff0c CentOS 7的启动服务不同 xff1a more etc redhat release 正文 xff1a 1 编辑sshd配置 xff0c 修
  • pytorch环境配置(装cuda、cudnn)win10+cuda10.1+cudnn7.6.5+torch1.7.1 && 集显装pytorch

    为了装这个走了太多坑了 xff0c 所以想写一篇具体教程 xff0c 有缘人看吧 xff0c 希望能解决你的问题 xff08 第一次写文章啥也不懂 xff0c 万一冒犯了啥 xff0c 麻烦告知我改 xff09 我anaconda很早就装过
  • APM无人机软件在环仿真环境搭建

    题记 xff1a 最近做毕业设计得用到无人机仿真 xff0c 重操旧业 xff0c 搞一搞SITL仿真 给个传送门参考 xff1a 无人机SITL仿真 APM软件在环仿真 我的环境 xff1a ubuntu18 04虚拟机 1 官方教程 a
  • 无人机导航中的各类坐标系

    无人机中的各类坐标系学习笔记 xff1a 北东地坐标系 NED north east down 东北天 ENU east north up 机体坐标系 body frame 1 导航中的坐标系理解 重要参考 导航中 xff0c 最重要的两个
  • 有了Systick中断为什么还要PendSV中断?

    文章目录 问题 xff1a 原因 xff1a 1 在SysTick中断里完成任务切换会降低操作系统的实时性 xff1a 2 把systick优先级设置为最高把PendSV设置为最低的好处 xff1a 3 结语 xff1a 问题 xff1a
  • OpenCV/caffe安装流程

    公司正在做人脸识别系统 xff0c 用到了OpenCV库 xff0c 下面就是根据网上资料以及自己多次部署安装的经验整理的安装流程 xff0c 希望能给一些人一点参考 系统 xff1a Ubuntu1604 CPU架构 xff1a 一般是x
  • win10远程桌面连接ubuntu18.04

    一开始 xff0c 我是根据这个教程进行操作的 xff0c 改了设置为共享 xff0c 安装xrdp等 xff0c 一切都完成后 xff0c 当进行连接时 xff0c 也会出现那个xrdp连接界面 xff0c 但只要一登陆 xff0c 界面
  • 机器学习算法知识点整理

    1生成模型generative model和判别模型 discriminative model 已知输入变量x xff0c 生成模型通过对观测值和标注数据计算联合概率分布P x y 来达到判定估算y的目的 判别模型通过求解条件概率分布P y
  • 我的2014年总结——奔波的一年

    2014年 xff0c 发生了一些人生的大事 xff0c 这些事既有忧 xff0c 又有喜 这因为有这些事情的发生 xff0c 所以我们才越发成熟 xff0c 越发稳重 2014年技术的提升没有前2年那么突飞猛进了 xff0c 生活的事情也
  • 谈谈你对Spring Bean生命周期的理解【面试】

    前言 面试中经常会被问到Spring Bean的生命周期 xff0c 有些人说记不住 xff0c 看了一遍源码也是云里雾里的 xff0c 那是因为只看理论 xff0c 没有自己实践 xff0c 如果自己亲自写代码验证一下 xff0c 不管是
  • FreeRTOS初级篇----名称规范

    数据类型 TickType t xff1a FreeRTOS中断计数值类型 xff0c 可以是16位也可以是32位 xff0c 对于32位CPU来说TickType t最好为32位 BaseType t xff1a 是能够让CPU运行效率最
  • FreeRTOS初级篇----创建任务--动态创建、静态创建

    任务创建函数 xff1a xTaskCreate BaseType t span class token function xTaskCreate span span class token punctuation span TaskFun
  • Linux 性能测试与分析

    源自 http blog sina com cn s blog 71ad0d3f01019uzl html Linux 性能测试与分析 Revision History Version Date Author Description 1 0