我正在玩一个脚本,但我被带走了(它现在仍在运行,但我的电脑还没有死)。我正在运行脚本的 17 次迭代(意图使我的计算机崩溃)。
查看活动监视器,我发现每个 Python 进程都有一个唯一的 pid,并且它们似乎每个占用了我大约 17-20% 的处理能力......这怎么可能?我的计算机是否神奇地增加了 200% 的功率并在某处违反了热力学定律?
我有一个戴尔 XPS 15 9570、32 GB 内存、2.2 GHz 和 6 核。当我使用应用程序(MATLAB 上的 parsim 命令)(有关更多详细信息)时,我的风扇开始快速运行,在此期间,我的 PC 似乎没有加热,但过去从未如此嘈杂,因此我很担心。在我的任务管理器中,此应用程序运行时 CPU 使用率显示为 100%。
我刚刚搬家,经过一些反复试验后发现,在我家和远程服务器之间的某个地方,有一些节流正在进行......但节流不是很智能。它只限制单个连接。因此,如果我复制一个 1 GB 的文件,它将以 150 kBps 的速度愉快地进行。但是如果我初始化 10 个副本,它们中的每一个都将达到 150 kBps(即我在多个连接上获得了更高的聚合带宽)。
我经常使用 rsync 来同步一些从工作到家庭的大型数据集(幸运的是以许多文件的形式)。有没有办法告诉 rsync 使用多个连接下载?理论上应该是可能的,因为据我所知,rsync 首先进行一次传递以确定必要的更改,然后执行实际传输。如果有一种神奇的方式告诉 rsync 将单个文件切成 N 块,然后再将它们拼接在一起,那就加分了。我相信CuteFTP实际上足够聪明,可以做到这一点。
顺序:for i in {1..1000}; do do_something $i; done- 太慢
并行:for i in {1..1000}; do do_something $i& done- 负载过多
如何并行运行命令,但不超过例如每时 20 个实例?
现在通常使用 hack like for i in {1..1000}; do do_something $i& sleep 5; done,但这不是一个好的解决方案。
更新 2:将接受的答案转换为脚本:http : //vi-server.org/vi/parallel
#!/bin/bash
NUM=$1; shift
if [ -z "$NUM" ]; then
echo "Usage: parallel <number_of_tasks> command"
echo " Sets environment variable i from 1 to number_of_tasks"
echo " Defaults to 20 processes at a time, use like …Run Code Online (Sandbox Code Playgroud) 我通常必须将网络文件系统上文件夹的内容复制到本地计算机。远程文件夹中有许多文件(1000 个)都相对较小,但由于网络开销,常规副本cp remote_folder/* ~/local_folder/需要很长时间(10 分钟)。
我相信这是因为文件是按顺序复制的——在复制开始之前,每个文件都会等待前一个文件完成。
提高这个副本速度的最简单方法是什么?(我假设它是并行执行复制。)
在复制之前压缩文件不一定会加快速度,因为它们可能都保存在不同服务器的不同磁盘上。
我们有一个在多个主机上并行运行的 Python 结构命令,如下所示:
$ fab --hosts=prod1.server,prod2.server,prod3.server --parallel copy_cache
Run Code Online (Sandbox Code Playgroud)
这会将缓存复制到并行列出的生产服务器。由于 XXgig 缓存目录可能需要数小时,因此在整个过程中会发生各种日志记录以指示我们的进展情况。由于复制是并发进行的,因此在命令行上运行时的输出会实时交错返回,如下所示:
[prod1.server] Executing task 'nginx_cache_copy'
[prod2.server] Executing task 'nginx_cache_copy'
[prod3.server] Executing task 'nginx_cache_copy'
2014-09-16 10:02:29.688243
[prod1.server] INFO: rsyncing cache dir
[prod1.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
"repo/cache/."
2014-09-16 10:02:29.716345
[prod2.server] INFO: rsyncing cache dir
[prod2.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
"repo/cache/."
2014-09-16 10:02:29.853275
[prod3.server] INFO: rsyncing cache dir
[prod3.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
"repo/cache/."
2014-09-16 10:02:29.984154
[prod1.server] INFO: Reloading nginx config
[prod1.server] run: sbin/nginx -s reload …Run Code Online (Sandbox Code Playgroud) 这里有几个问题,希望各位大侠赐教。
ArchLinux (Manjaro)。
我正在运行一个 bash 文件。它运行 2 个进程(命令),使用&. 但是当我按Ctrl+C停止程序时 - 一个进程死了,另一个继续工作。
如何停止这两个进程?或者我如何编写一个新的脚本来杀死这两个进程?
随着硅成本的降低和消费者需求的增加,制造商似乎正在推动两件事之一:时钟速度和/或核心数。随着事情的发展,处理器的时钟速度似乎不再提高,而是处理器内核的数量。
我只记得几年前,我有一个不错的快速单核奔腾 4 处理器。快进到今天,我认为您甚至无法购买单核处理器(更不用说甚至手机中多核处理器的增加)。事情的发展方式是,我们可能会在几年内找到具有数百个内核的计算机(我知道许多操作系统已经支持它)。
提高时钟速度还是增加内核数量对系统的整体性能更有利?假设我们要让数百个内核一起运行,或者时钟速度是我们今天的十倍(无论这在物理上是否可行)。
哪些常见过程(例如加密、文件压缩、图像/视频编辑)最能从其中一个或另一个中受益?是否有一些进程可以,但目前没有(由于技术原因)通过增加它们的并行性来加速?
假设假设的处理器具有完全相同的核心设计(字长、地址位宽、内存总线大小、缓存等),因此这里唯一的变量是时钟速度和核心数。再说一次,我不是在谈论一个、两个甚至四个内核 - 想象一下几十到几百个。
cpu multi-processor multi-core computer-architecture parallel-processing
有人知道是否有可以执行此操作的 cmd 脚本和/或准备好用于该工作的命令行工具吗?
bash ×2
cpu ×2
linux ×2
threads ×2
command-line ×1
cpu-usage ×1
deployment ×1
fan ×1
jenkins ×1
macos ×1
matlab ×1
multi-core ×1
networking ×1
python ×1
rsync ×1
unix ×1
wait ×1
windows ×1
windows-7 ×1