Analyzers
Support for Analyzers (Intel VTune™ Profiler, Intel Advisor, Intel Inspector)
4699 Discussions

intel vtune profile sgx application fail

maxdd
Beginner
759 Views

This is a follow up question of "intel vtune to profile sgx application".

https://community.intel.com/t5/Intel-Software-Guard-Extensions/intel-vtune-to-profile-sgx-applicatio...

 

My real program is complicated and I have to use attaching to a process to profile. There is no way that I can run my program directly from VTune.

I find that starting the application from VTune directly would give a different result than attaching  VTune to a process.

 

I modify the SampleEnclave example a little bit.

I add the following code to Enclave.cpp.

void func1() {
    printf("in func1\n");
    for (int i = 0; i < 1000000000; i++) {}
}

void func2() {
    printf("in func2\n");
    for (int i = 0; i < 1000000000; i++) {}
}

void enc_loop() {
    printf("in the loop\n");

    func1();
    func2();
}

I add the following code to App.cpp. I get the pid and attach the VTune to the program, then I enter a character to let the enclave program continue to run.

printf("Enter a character to start, %d\n", (int)syscall(SYS_gettid));
getchar();

enc_loop(global_eid);

 

If I directly run the application from VTune, I would get the following result

Top Hotspots
Function             Module             Precise Clockticks
-------------------  -----------------  ------------------
func1                enclave.signed.so      13,236,680,000
func2                enclave.signed.so      13,210,000,000
mutex_spin_on_owner  vmlinux                   150,400,000
do_ocall             enclave.signed.so         115,160,000
sgx_spin_lock        enclave.signed.so         104,420,000
[Others]             N/A                       337,860,000

 

If I attaching  VTune to the process, I would get the following result. The func1 and func2 are not shown in the profile result.

Top Hotspots
Function                    Module                    Precise Clockticks
--------------------------  ------------------------  ------------------
__morestack                 libsgx_urts.so.1.1.103.3          14,380,000
[Outside any known module]  [Unknown]                          4,820,000
unmap_page_range            vmlinux                              540,000
find_get_entries            vmlinux                              500,000
free_pcppages_bulk          vmlinux                              300,000
[Others]                    N/A                                4,920,000

 

 

0 Kudos
10 Replies
Sahira_Intel
Moderator
730 Views

Hi,

This is actually a VTune error. I will move this thread to the correct team.


Sincerely,

Sahira


DiyaN_Intel
Moderator
710 Views

Hi, 


 Thank you for posting in Intel communities.


Could you please share the following details -

  1. OS and hardware details.
  2. VTune version.
  3. The exact steps and commands you used.


Regards,

Diya


maxdd
Beginner
691 Views

hardware: Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz

OS: Ubuntu 18.04.2 LTS (Bionic Beaver)

Vtune: Intel(R) oneAPI VTune(TM) Profiler 2021.9.0 (build 621210) Command Line Tool

command 1: sudo /opt/intel/oneapi/vtune/latest/bin64/vtune -collect sgx-hotspots -knob sampling-interval=.01 ./app

command 2: sudo ./vtune -collect sgx-hotspots -knob sampling-interval=0.01 -target-pid 8692

I use the SampleEnclave example provided by Intel and make some modifications. I also attach the file after modifications.

The 'Enclave.edl.cpp' should be 'Enclave.edl'. For some reason, I can't upload '.edl' file, so I just rename it.

DiyaN_Intel
Moderator
679 Views

Hi , 

 

 Thank you for sharing the details.

 We are getting error while creating the executable file from our end because we don't have the header files mentioned in the code.

 Please find the below screenshot.

 

DiyaN_Intel_3-1660719735573.png

 

 Could you please share your .exe file so that we can check from our end.

 

Regards, 

Diya

  

 

maxdd
Beginner
664 Views

I upload the whole project code. Please rename it to 'SampleEnclave.tar.gz'.

maxdd
Beginner
660 Views

I upload the whole project code.

DiyaN_Intel
Moderator
535 Views

Hi, 


Thank you for sharing your details. We are able to reproduce your issue. We are working on this internally. 


Regards, 

Diya


Andrey_I_Intel
Employee
437 Views

Hi!

VTune dev here. Seeing how you have [Outside any known module] in your attach case, it may be that VTune could collect the samples from the enclave, but had trouble identifying the actual module these belong to.

It may not be apparent from the documentation, but in order for this to work the two conditions must be fulfilled:

  1. SGX SDK has to proactively report the enclave data to VTune, and it does so only when sgx_create_enclave* method is invoked with SGX_DEBUG_FLAG argument and is built with SGX_DEBUG or SGX_PRERELEASE makeflags, for security reasons.
  2. As a consequence of the above, VTune has to receive reports about the enclaves during the collection phase. It sets up the needed environment for the target application automatically when you choose to profile in launch mode, but to enable the reporting in attach mode you will have to prepare the environment for your application manually before launching it. Please refer to this article in the user manual on how to do this (ITT API is used for enclave reporting): https://www.intel.com/content/www/us/en/develop/documentation/vtune-help/top/api-support/instrumenta...

Please double check if the above is in place in your profiling environment.

 

BR,

Andrey

DiyaN_Intel
Moderator
366 Views

Hi,

 

Good day to you .

 

We have not heard back from you . Is your issue resolved with the above solution?

 

If this resolves your issue, make sure to accept this as a solution. This would help others with similar issue. Thank you!

 

Regards,

Diya

 

DiyaN_Intel
Moderator
148 Views

Hi,

 

Good day to you.

 

We assume that your issue is resolved.

 

If you need any additional information, please post a new question as this thread will no longer be monitored by Intel.

 

Thanks and Regards,

Diya Nandy

 

Reply