问题标签 [pmap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
memory-leaks - Solaris:pmap 报告的虚拟内存大小与 ps 不同
我有一个在 Solaris (SunOS m1001 5.10 sun4v sparc) 上运行的进程,并且正在监视使用的总虚拟内存。
定期运行 ps 表明 VSZ 随着时间的推移呈线性增长,跃迁 80kbytes,并且它一直在增长,直到达到 4GB 限制,此时它的地址空间不足,事情开始分崩离析。
我怀疑内存泄漏,并决定使用 pmap 进一步调查。但是 pmap 显示 VSZ 根本没有增长,而是保持稳定。此外,所有文件映射、共享内存映射和堆都保持相同的大小。
我的第一个问题是:为什么 ps 和 pmap 会为同一个进程产生不同的 VSZ?
我可以想象堆大小的计算方式不同(例如堆使用量与最高堆指针),因此开始考虑堆碎片的方向。然后,我使用 libumem 和 mdb 生成有关不同时间分配内存的详细报告,并注意到分配的内存绝对没有差异。
所以我的第二个问题是:找出导致 ps 报告的 VSZ 增长的原因的最佳方法是什么。
performance - 如何获得并发函数(pmap)以使用 Elixir 中的所有内核?
我是 Elixir 的新手,我开始阅读 Dave Thomas 出色的Programming Elixir。我很好奇我可以将“pmap”函数的并发性带到多远,所以我迭代地将平方的项目数从 1,000 增加到 10,000,000。出于好奇,我看了看输出htop
我这样做的输出,通常 CPU 使用率达到峰值,如下所示:
在展示了书中的例子后,戴夫说:
而且,是的,我刚刚启动了 1,000 个后台进程,并且使用了我机器上的所有内核和处理器。
我的问题是,为什么我的机器上只有核心 1、3、5 和 7 亮起?我的猜测是,这与我的iex
进程只是一个操作系统级别的进程有关,而 OSX 正在管理该进程的范围。这就是这里发生的事情吗?是否有某种方法可以确保所有内核都用于性能密集型任务?
clojure - clojure pmap - 为什么我不使用所有核心?
我正在尝试使用 clojurepantomime
库从大量tif
文档(以及其他文档)中提取/ocr 文本。
我的计划是使用 pmap 对一系列输入数据(来自 postgres 数据库)应用映射,然后使用 tika/tesseract OCR 输出更新同一个 postgres 数据库。这一直工作正常,但是我在 htop 中注意到许多内核有时处于空闲状态。
无论如何要调和这一点,我可以采取哪些步骤来确定为什么这可能会在某处阻塞?所有处理都发生在一个 tif 文件上,并且每个线程都是完全互斥的。
附加信息:
- 一些 tika/tesseract 过程需要 3 秒,其他需要 90 秒。一般来说,tika 受 CPU 限制很大。根据 ,我有足够的可用内存
htop
。 - postgres 在会话管理中没有锁定问题,所以我认为这不会阻碍我。
- 也许某个地方
future
正在等待deref
?怎么知道在哪里?
任何提示表示赞赏,谢谢。下面添加的代码。
multithreading - 如何在clojure中生成n个线程
我想知道如何在 clojure 中创建 n 个线程。有一个名为“estimate-value”的函数,它可以估计一个值并返回结果。现在我想使用 pmap 或 pcalls 创建 n 个线程,每个线程可以计算一个估计值,然后组合 n 个结果并返回最终估计值。我的代码是
我确信函数估计值是正确的。但是当我运行并得到一个错误时:
如何修复此计算值函数?谢谢!
parallel-processing - 玩具示例的 pmap 慢
我正在 Julia 中测试并行性,看看我的机器上是否有加速(我正在选择一种语言来实现新算法)。我不想花大量时间写一个巨大的例子,所以我在发布版本 Julia 0.4.5(Mac OS X 和双核)上做了以下测试:
pmap
比 map (>20x) 慢得多,并且分配的内存远远超过 10x。我究竟做错了什么?
谢谢。
clojure - 为什么 pmap|reducers/map 不使用所有 cpu 内核?
我正在尝试解析一个包含一百万行的文件,每一行都是一个 json 字符串,其中包含有关一本书的一些信息(作者、内容等)。我正在使用iota加载文件,因为OutOfMemoryError
如果我尝试使用slurp
. 我也在使用cheshire来解析字符串。该程序只需加载一个文件并计算所有书籍中的所有单词。
我的第一次尝试包括pmap
做繁重的工作,我认为这基本上会利用我所有的 cpu 内核。
虽然它似乎确实使用了所有核心,但每个核心很少使用超过 50% 的容量,我的猜测是它与 pmap 的批量大小有关,所以我偶然发现了一些相对较老的问题,其中一些评论引用了clojure.core.reducers
库.
我决定使用以下方法重写函数reducers/map
:
但是 cpu 使用率更差,与之前的实现相比,它甚至需要更长的时间才能完成:
我究竟做错了什么?解析大文件时,mmap loading + reducers 是正确的方法吗?
编辑:这是我正在使用的文件。
EDIT2:以下是使用iota/seq
而不是的时间iota/vec
:
parallel-processing - 在 Julia 中使用 pmap 时修复参数
我已经定义了一个函数f(x, y, z)
,Julia
我想并行计算、hold和fixedf
的许多值。使用 什么是“最佳实践”方法?x
y
z
pmap
如果它是类似的东西就好了pmap(f, x, y = 5, z = 8)
,这就是apply
家庭如何处理 中的固定参数R
,但它似乎没有那么简单。我已经设计了解决方案,但我发现它们并不优雅,并且我怀疑它们是否能很好地概括我的目的。
- 我可以包装
f
一个函数g
whereg(x) = f(x, y = 5, z = 8)
. 然后我简单地打电话pmap(g, x)
。这不像我想要的那么简约。 - 我可以将 5 和 8 设置为定义的默认值,
y
然后调用. 这让我在我想修复某个变量的值的情况下感到不舒服,其中(有充分理由)在定义的时间没有定义,但会在被调用的时候定义。它有效,但它有点吓到我。z
f
pmap(f, x)
y
a
a
f
f
r - 朱莉娅 pmap 性能
我正在尝试将我的一些 R 代码移植到 Julia;基本上我在 Julia 中重写了以下 R 代码:
可以注意到,从一个核心升级到 11 个核心时,我的速度得到了显着提升。现在我正在尝试在 Julia 中做同样的事情:
正如人们注意到的那样,我没有得到任何 pmap 的加速。也许有人可以提出替代方案。
function - Julia,多次运行函数,将结果保存在数组中
我正在 Julia 中建立一个微观模拟模型。我已经构建了我的函数结构,它对于 1 个“人”来说运行得很好。我想编写脚本通过模型运行 100000 多人并将结果保存在一个位置。
最终我想并行执行这个。
下面我包含了一个带有虚拟概率的简单工作版本的代码。
linux - alpine linux:pmap输出不显示RSS
我有一个运行 alpine linux 基本映像的 docker 容器,当我执行到 docker 容器中并运行命令时:
pmap -x [pid]
我在输出中看到的标题是:
Address Kbytes PSS Dirty Swap Mode Mapping
我实际上是在明确寻找 RSS(驻留集大小)。为什么这个标题没有出现在输出中?