草庐IT

linux - 确定 Linux 上进程停滞的原因

我正在尝试确定Linux上进程停滞的原因。这是一个电信应用程序,在相当重的负载下运行。8个T1跨度中的每一个都有一个单独的过程。每隔一段时间,其中一个进程就会变得非常无响应-在通常非常繁忙的进程日志中记录事件之前最多可能需要50秒。可能是某些系统资源不足。显而易见的事情-CPU使用率-看起来没问题。哪个linux实用程序可能最适合捕获和分析这类事情,并且尽可能不引人注目,因为这是一个高负载系统?看起来它需要是流程而不是系统导向的。也许持续监控/proc/pid/XX?Top在这里似乎用处不大。 最佳答案 如果您能够发现这个“无响应的

linux - Process niceness(优先级)设置对 Linux 没有影响

我写了一个测试程序,它只包含一个无限循环和一些在内部进行计算,并且不执行输入/输出操作。我尝试启动该程序的两个实例,一个具有高niceness值,另一个niceness值较低:sudonice-n19taskset1./testsudonice-n-20taskset1./testtaskset命令确保两个程序在同一个内核上执行。与我的预期相反,顶级报告称这两个项目都获得了大约50%的计算时间。这是为什么?nice命令甚至有效果吗? 最佳答案 您看到的行为几乎可以肯定是因为Linux2.6.38(2010年)中添加的自动分组功能。大

linux - Process niceness(优先级)设置对 Linux 没有影响

我写了一个测试程序,它只包含一个无限循环和一些在内部进行计算,并且不执行输入/输出操作。我尝试启动该程序的两个实例,一个具有高niceness值,另一个niceness值较低:sudonice-n19taskset1./testsudonice-n-20taskset1./testtaskset命令确保两个程序在同一个内核上执行。与我的预期相反,顶级报告称这两个项目都获得了大约50%的计算时间。这是为什么?nice命令甚至有效果吗? 最佳答案 您看到的行为几乎可以肯定是因为Linux2.6.38(2010年)中添加的自动分组功能。大

c++ - 在 Linux 上防止多个进程实例

在Linux平台上,进程(C++应用程序)检查其实例尚未运行的最佳方法是什么? 最佳答案 执行此操作的标准方法是在某处创建一个pid文件,通常包含程序的pid。你不需要把pid放在那里,你可以在上面放一个独占锁。如果您打开它进行读/写并使用LOCK_EX|将其聚集LOCK_NB,如果文件已经被锁定,它将失败。这是无竞争条件的,如果程序崩溃,锁会自动释放。通常您希望为每个用户执行此操作,因此用户的主目录是放置文件的好地方。如果它是一个守护进程,像/var/run这样的地方会更好。 关于c+

c++ - 在 Linux 上防止多个进程实例

在Linux平台上,进程(C++应用程序)检查其实例尚未运行的最佳方法是什么? 最佳答案 执行此操作的标准方法是在某处创建一个pid文件,通常包含程序的pid。你不需要把pid放在那里,你可以在上面放一个独占锁。如果您打开它进行读/写并使用LOCK_EX|将其聚集LOCK_NB,如果文件已经被锁定,它将失败。这是无竞争条件的,如果程序崩溃,锁会自动释放。通常您希望为每个用户执行此操作,因此用户的主目录是放置文件的好地方。如果它是一个守护进程,像/var/run这样的地方会更好。 关于c+

c - thread和process id的取值范围是多少?

fork和pthread_create将返回进程ID或线程ID。但是我不知道这些id的取值范围。现在我想制作一个查找表,在每个条目中都有一个线程ID的项目/字段。每个条目的结构如下:typedefstruct{intseq;pthread_ttid;...}entry_t;当我没有得到一个线程的tid时,我想给一个无效的tid赋值(很快这个字段将被一个有效的填充,但在此之前fill函数将检查pid是否有效)。那么,thread和processid的取值范围是多少? 最佳答案 pthread_t类型是完全不透明的。您只能将它与pthr

c - thread和process id的取值范围是多少?

fork和pthread_create将返回进程ID或线程ID。但是我不知道这些id的取值范围。现在我想制作一个查找表,在每个条目中都有一个线程ID的项目/字段。每个条目的结构如下:typedefstruct{intseq;pthread_ttid;...}entry_t;当我没有得到一个线程的tid时,我想给一个无效的tid赋值(很快这个字段将被一个有效的填充,但在此之前fill函数将检查pid是否有效)。那么,thread和processid的取值范围是多少? 最佳答案 pthread_t类型是完全不透明的。您只能将它与pthr

linux - 如何查找或计算 Linux 进程的页表大小和其他内核核算?

如何找出Linux进程的页表以及任何其他可变大小的进程记帐有多大? 最佳答案 如果你真的对页表感兴趣,做一个$cat/proc/meminfo|grepPageTablesPageTables:24496kB 关于linux-如何查找或计算Linux进程的页表大小和其他内核核算?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/853736/

linux - 如何查找或计算 Linux 进程的页表大小和其他内核核算?

如何找出Linux进程的页表以及任何其他可变大小的进程记帐有多大? 最佳答案 如果你真的对页表感兴趣,做一个$cat/proc/meminfo|grepPageTablesPageTables:24496kB 关于linux-如何查找或计算Linux进程的页表大小和其他内核核算?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/853736/

Linux:多核 CPU 中的进程和线程

与进程相比,线程更不可能从多核处理器中获益,这是真的吗?换句话说,内核会决定在单核而不是多核上执行线程吗?我说的是属于同一进程的线程。 最佳答案 我不知道(各种)Linux调度程序如何处理这个问题,但是当线程在不同的核心上运行时,线程间通信会变得更加昂贵。因此,如果有其他进程需要CPU时间,调度程序可能会决定在同一CPU上运行进程的线程。例如,对于双核CPU,如果有两个进程和两个线程,并且都在使用它们获得的所有CPU时间,那么最好在第一个Core上运行第一个进程的两个线程,然后在第一个Core上运行第一个进程的两个线程第二个核心上的