diff --git a/README.md b/README.md index 661b013a016ebb64e42ac494c5c82a5e1876e095..996607b067e1441e93af098edb0c221f82927f18 100644 --- a/README.md +++ b/README.md @@ -228,6 +228,7 @@ typedef struct { uint32_t parameter_num; uint32_t workers_policy; uint32_t rollback_to_common; + cpu_set_t num_cores; } cc_sl_config_t; ``` 各配置项规格如下表: @@ -242,11 +243,25 @@ typedef struct { | parameter_num | switchless函数支持的最大参数个数,该字段仅在ARM平台生效。
规格:
ARM:最大值:16;最小值:0| | workers_policy | switchless代理线程运行模式,该字段仅在ARM平台生效。
规格:
ARM:
WORKERS_POLICY_BUSY:代理线程一直占用CPU资源,无论是否有任务需要处理,适用于对性能要求极高且系统软硬件资源丰富的场景;
WORKERS_POLICY_WAKEUP:代理线程仅在有任务时被唤醒,处理完任务后进入休眠,等待再次被新任务唤醒| | rollback_to_common | 异步switchless调用失败时是否回退到普通调用,该字段仅在ARM平台生效。
规格:
ARM:0:否,失败时仅返回相应错误码;其他:是,失败时回退到普通调用| +| num_cores | 用于设置安全侧线程绑核
规格:
最大值为当前环境CPU核数 | ### 4 switchless开发流程 [参考 switchless README.md文件](./examples/switchless/README.md) -### 5 常见问题 +### 5 switchless性能优化 +#### 5.1 CPU绑核 +switchless机制支持配置TA线程绑核,降低频繁调度切换开销,来优化REE和TEE业务线程性能。 + +使用方式:cpu_set_t数组配置字段,支持TA线程配置绑核参数,将配置通过共享内存传入TA侧,并在switchless初始化TA线程池时,按照配置参数设置绑核。 + +#### 5.2 通过openSession注册共享内存 +secGear新增支持通过openSession注册共享内存,并对新老版本注册共享内存做兼容。默认使用openSession方式,当TEEOS不支持时,回退使用ecall方式注册共享内存。 + +注:申请共享内存成功时,如果出现如下打印,表示先尝试使用openSession注册共享内存失败,再尝试ecall注册方式成功,可忽略错误打印 +``` + ERROR:[handle_open_session_register_shared_memory] Handle ecall with new session, failed to open session, ret:ffff0000, origin:3 +``` +### 6 常见问题 - sgx环境下开启switchless特性创建enclave后,直接销毁enclave会产生core dump sgx开启switchless需有一下两步: