当前位置: 首页 > news >正文

做网站维护需要懂什么流量卡

做网站维护需要懂什么,流量卡,视频网站咋么做,泉州做网站价格有时候为了降低App算力占用,会把关键的线程绑定到大核中,下面介绍一种绑核的方式 查看绑核 查看pid :/ # ps -A | grep test u0_a15 25178 405 15950272 176544 do_epoll_wait 0 S com.test.jnites查看线程号 top -H -p 25178 25224 u0_…

有时候为了降低App算力占用,会把关键的线程绑定到大核中,下面介绍一种绑核的方式

查看绑核

  1. 查看pid

    :/ # ps -A | grep test
    u0_a15        25178    405 15950272 176544 do_epoll_wait      0 S com.test.jnites
    
  2. 查看线程号

    top -H -p 25178
    25224 u0_a15       20   0  15G 172M  82M R 83.3   1.6   4:17.53 JNI_Test        com.test.jnitest
    25229 u0_a15       10 -10  15G 172M  82M S  0.0   1.6   0:00.00 AdrenoOsLib     com.test.jnitest
    25221 u0_a15       10 -10  15G 172M  82M S  0.0   1.6   0:00.03 RenderThread    com.test.jnitest
    

    可以获取到JNI_Test线程号25224

  3. 查看绑核情况

    :/ # taskset -p 30692
    pid 30692's current affinity mask: ff
    

    结果显示为 FF,则表示当前进程已绑定到所有的可用核心。这是因为在 taskset 命令中,每个核心使用一个位来表示,1 表示该核心被绑定,0 表示未被绑定。因此,FF 的二进制表示为 11111111,表示所有的核心都被绑定。

绑核

通过 Java 代码调用 sched_setaffinity 函数来实现线程或进程的核心绑定。需要注意的是,在 Java 中并没有直接暴露 sched_setaffinity 函数,需要使用 JNI(Java Native Interface)来调用 C/C++ 代码中的相应函数。
以下是一个简单的示例,展示了如何使用 JNI 和 sched_setaffinity 函数来将当前线程与指定的 CPU 核心绑定。首先在 C/C++ 代码中实现核心绑定函数,然后在 Java 代码中调用该函数:

  1. JAVA

     class TestLib {companion object{init {System.loadLibrary("jnitest")}}external fun setAffinity(core_id: Int): Int}
    
  2. C++

     #include <jni.h>#include <string>#include <thread>#include <sched.h>#include <unistd.h>extern "C"JNIEXPORT jint JNICALLJava_com_test_jnitest_TestLib_setAffinity(JNIEnv *env, jobject thiz, jint core_id) {cpu_set_t cpuset;CPU_ZERO(&cpuset);CPU_SET(core_id, &cpuset);pid_t pid = getpid();if (sched_setaffinity(pid, sizeof(cpu_set_t), &cpuset) == -1) {return -1; // 设置失败}return 0; // 设置成功}
    
  3. 测试调用

     var testThread = Thread{var ret = testLib.setAffinity(3)Log.i(TAG,"ret = ${ret}")while (true){}}testThread.name = "JNI_Test"testThread.start()
    

    运行后查看

     :/ # taskset -p 8599pid 8599's current affinity mask: 8
    

    发现主线程绑定到了第三个核上,8是0000 1000,如果要是绑定子线程的话需要修改sched_setaffinity第一个参数改为0,再运行后

     :/ # ps -A | grep testu0_a15        10010    405 15939516 143716 do_epoll_wait      0 S com.test.jnitest:/ # taskset -p 10010pid 10010's current affinity mask: ff:/ # taskset -p 10040pid 10040's current affinity mask: 8
    

    子线程成功绑定到了第三个核

http://www.yayakq.cn/news/294695/

相关文章:

  • 网站怎么创建自己的网站wordpress主题授权
  • 电脑可以做网站服务器吗视频网站砸钱做生态
  • 如何诊断网站郑州建站软件
  • 专业手机网站公司吗精品课程网站建设申报
  • 新县住房和城乡规划建设局网站企业宣传型的网站
  • 网站建设分项报价表服务公司名字大全
  • 苏州网站建设系统电话网络规划设计师考试大纲百度网盘
  • 临汾做网站电话wordpress仿站主题
  • 飞卢盗版做的最好的网站网站优化seo推广服务
  • 淄博想建网站潍坊网站制作套餐
  • 网站建设福iis网站跳转
  • 九江网站建设服务山西网站建设开发
  • wordpress小工具不显示seo技术分享
  • 黑河做网站的百度云在线登录
  • 上海市青浦区建设局网站目前比较火的电商平台有哪些
  • 网站首页包含的内容怎么做平台已经维护6天了
  • 建自己的网站做外贸上海公司注册核名
  • 很简单的做设计的网站宁波seo资源
  • 茂名做网站建设公司500元做网站
  • 亿玛酷网站建设wordpress 整合ck
  • 手机网站的模板下载软件验证码注册
  • 烟台网站制作哪家好企业网站建站
  • 网站子域名 更换sem推广软件哪家好
  • 校园网站界面建设宁波网页设计的技术要求
  • 建设网站 安全事项做百度推广送网站吗
  • 网站开发与管理专业成都房地产公司排名
  • 三网合一网站怎么做企业建设企业网站的好处
  • 如何修改上线网站软文写作的基本要求
  • 宝安营销型网站费用大灰狼网站更新升级通知
  • 音乐播放网站怎么做医疗类网站建设