频繁调用mprotect,是否会导致长尾效应问题?

2026-04-16 18:012阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计471个文字,预计阅读时间需要2分钟。

频繁调用mprotect,是否会导致长尾效应问题?

我正在开发一个并行应用程序(C,pthread)。我跟踪系统调用,发现我的程序在特定时刻的并行性能明显下降。跟踪结果显示,我的程序多次调用mprotect(),这足以表明我的程序在运行时出现减慢。我确实分配了大量内存。

我正在开发一个并行应用程序(C,pthread).我跟踪系统调用,因为在某些时候我的并行性能很差.我的跟踪显示我的程序多次调用mprotect()……足以显着减慢我的程序.

我确实分配了大量的内存(使用malloc())但是只有合理数量的调用brk()才能增加堆大小.那么为什么这么多人调用mprotect()?

你在创建和销毁大量线程吗?

频繁调用mprotect,是否会导致长尾效应问题?

大多数pthread实现将在分配线程堆栈时添加“保护页面”.它是一个访问受保护的内存页面,用于检测堆栈溢出.每次创建或终止线程时,我都希望至少有一次调用mprotect来(保护)保护页面.如果是这种情况,有几个明显的策略:

>在创建线程之前,使用pthread_attr_setguardsize()将防护页面大小设置为零.
>使用线程池(与处理器一样多的线程).一旦线程完成任务,将其返回到池以获取新任务而不是终止并创建新线程.

另一种解释可能是你在一个平台上,如果检测到溢出,就会增加线程的堆栈.我不认为这是在具有GCC / Glibc的Linux上实现的,但最近有这些方面提出了一些建议.如果在处理时使用大量堆栈空间,则可以使用pthread_attr_setstacksize显式增加初始/最小堆栈大小.

或者它可能完全是另一回事!

本文共计471个文字,预计阅读时间需要2分钟。

频繁调用mprotect,是否会导致长尾效应问题?

我正在开发一个并行应用程序(C,pthread)。我跟踪系统调用,发现我的程序在特定时刻的并行性能明显下降。跟踪结果显示,我的程序多次调用mprotect(),这足以表明我的程序在运行时出现减慢。我确实分配了大量内存。

我正在开发一个并行应用程序(C,pthread).我跟踪系统调用,因为在某些时候我的并行性能很差.我的跟踪显示我的程序多次调用mprotect()……足以显着减慢我的程序.

我确实分配了大量的内存(使用malloc())但是只有合理数量的调用brk()才能增加堆大小.那么为什么这么多人调用mprotect()?

你在创建和销毁大量线程吗?

频繁调用mprotect,是否会导致长尾效应问题?

大多数pthread实现将在分配线程堆栈时添加“保护页面”.它是一个访问受保护的内存页面,用于检测堆栈溢出.每次创建或终止线程时,我都希望至少有一次调用mprotect来(保护)保护页面.如果是这种情况,有几个明显的策略:

>在创建线程之前,使用pthread_attr_setguardsize()将防护页面大小设置为零.
>使用线程池(与处理器一样多的线程).一旦线程完成任务,将其返回到池以获取新任务而不是终止并创建新线程.

另一种解释可能是你在一个平台上,如果检测到溢出,就会增加线程的堆栈.我不认为这是在具有GCC / Glibc的Linux上实现的,但最近有这些方面提出了一些建议.如果在处理时使用大量堆栈空间,则可以使用pthread_attr_setstacksize显式增加初始/最小堆栈大小.

或者它可能完全是另一回事!