SGX call stack collection / analysis

SGX call stack collection / analysis

Hi,

I'm perf analyzing SGX, I used hotspots to improve performance of functions in my code and got to a point where high hitters are "system" calls (i.e. _intel_avx_rep_memcpy, malloc, memchr, _intel_avx_rep_memset, free, etc.).

I believe that using stack informaiton VTune will build a meaningful Top-down tree which will allow me to capture whether there are blocks in my code that are calling "system" calls intensively.

Is there a way to enable call stack collection for SGX analysis? or other methods that will allow me to have a meaningful top-down tree?

11 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

You can try the following:

1. Copy the 'SGX Hotspots' analysis type

2. In the appeared custom analysis check 'Collect Stacks' option

3. Run your analysis

4. In the opened result change viewpoint (using control at the top) from 'Hardware Events' to 'Hotspots'

Note that this method wasn't tested so no guarantee it will work correctly.

Hi Dmitry, I tried that and VTune reports issues with vtss driver.

I tried to work with VTune 2016 Update 4, 2018 Update 1 and 2018 Update 3. Please note that I'm aware that SGX hotspots is broken in 2018 Update 3 (per our previous conversation). I tried it just to see if there is some issue with my OS that requires latest VTune bits.

VTSS Driver installation fails, event viewer reports "The vtss service failed to start due to the following error: %%4294967290" - seems to translate to error code -6 under twos-complement. I couldn't find explanation to this error that could help me work around the issue.

Can you assist?

Attaching VTSS installation error files and machine information 

Attachments: 

AttachmentSize
Downloadapplication/zip vtss driver issues.zip34.42 KB

Hi Yehonatan,

Unfortunately VTune vtss doesn't support Windows 10 RS4 yet. This will be enabled in future updates.

:(

Where can I see VTune support matrix? The problem with Windows 10 is that it auto-updates and I couldn't find a way to stop it from doing so..

Any ETA for when it'd be supported?

Best Reply

You can find the supported OSes in release notes: https://software.intel.com/en-us/articles/intel-vtune-amplifier-release-notes

At this point we can't provide any ETA.

Thanks,

Regarding VTune 2016 - the release notes doesn't say which Windows10 Versions are supported

https://software.intel.com/sites/default/files/managed/d8/4a/release_not...

 

Can you tell?

It does. E.g. for 2016 Update 2:

"Support for the Microsoft Windows* 10 November update "

The 2016 line is quite old and it supports only early versions of Windows 10.

You are right, the release notes for Update 2 give some hints, I didn't look into them as I'm using Update 4 whose release notes do not mention supported version of Windows 10.

I guess that "November Update" refers to Version 1511 which is too old for me, I'll try to work with VTune 2018 Update 1 and RS2, will contact you if I encounter any issues.

Thank you for your assistance.

Quote:

Dmitry Ryabtsev (Intel) wrote:

You can try the following:

1. Copy the 'SGX Hotspots' analysis type

2. In the appeared custom analysis check 'Collect Stacks' option

3. Run your analysis

4. In the opened result change viewpoint (using control at the top) from 'Hardware Events' to 'Hotspots'

Note that this method wasn't tested so no guarantee it will work correctly.

For the sake of completeness - after having an environment which fully supports SGX, attempting to follow the above instructions produced a call-graph up to the ecall. All the frames within the enclave are available but are being laid flat under the ecall (I guess call stack collection doesn't work within the enclave). 

Leave a Comment

Please sign in to add a comment. Not a member? Join today