【问题标题】:performance of copy_from_user / copy_to_user when process and kernel is busy进程和内核繁忙时 copy_from_user / copy_to_user 的性能
【发布时间】:2016-12-22 01:35:23
【问题描述】:

当进程忙于做某事或内核负载过重时,copy_from_user() 和 copy_to_user() 的性能是否真的会变差? copy_from/to_user 在正常情况下的性能如何,复制几百字节需要几微秒?系统繁忙时是否可能需要几毫秒?

如果比较 copy_from_user 和 memcpy,memcpy 会快多少,因为它没有健全性检查和锁定?

谢谢!

【问题讨论】:

  • 嗨@damingzi,我也想知道同样的事情,我最近遇到了一个问题,在VM中,当I/O非常快时,copy_to_user()实际上减慢了整个读取速度,当更多并行作业运行时,情况会变得更糟。如果您能与我分享更多背景信息,我将不胜感激!谢谢!

标签: memory linux-kernel memcpy


【解决方案1】:

您是指查找,而不是锁定?

所说的原语并没有比 memcpy 做更多的事情,您将通过切换到单纯的 memcpy(您不应该这样做)来衡量任何“节省”,您已经做错了。

copy_to_user/whatever 在常见的情况下,除了 memcpy 几乎什么都不做。它们最终变得昂贵的一种情况是在访问用户空间缓冲区时出现页面错误。但是如果这个原语恰好需要一个,memcpy 也必须这样做——数据毕竟不在 ram 中(或者它必须是非共享的,无论如何)。

Tl;dr 你的问题很可疑,切换到 memcpy 不可能解决你遇到的任何问题

你是如何测量什么以及如何询问这些原语的?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-06
    • 2012-09-21
    • 2017-11-13
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    相关资源
    最近更新 更多