hyperlight-dev / hyperlight-dev/hyperlight

Optimise floating point/SIMD context-save/restore

Đang mở
#711 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
area/performance lifecycle/confirmed
Ngôn ngữ chính
Rust
Star
4.7k
Fork
208
Merge trung bình
1 ngày 7 giờ
Pull request đã merge (30 ngày)
48

Mô tả

Currently, the hyperlight_guest exception handlers are compiled along with the rest of the guest code, and the compiler sometimes introduces floating point/SIMD instructions (e.g. exception handlers use the same memcpy as the rest of the guest, which uses XMM registers on x86-64). Because of this, we currently save and restore the entire floating point and SSE register state on every context switch (see [here](https://github.com/hyperlight-dev/hyperlight/blob/ea6fa8f16dae2325d94af39eb6ac3b441b24dcac/src/hyperlight_guest_bin/src/exceptions/interrupt_entry.rs#L74). This is not ideal, because it makes the context-save large and slow.

Other kernels, like Linux, arrange for most kernel code to be compiled without FPU/SIMD, and in the few cases where it's a good performance tradeoff to use SIMD in the kernel at the cost of the extra overhead, they have `kernel_fpu_begin()`/`kernel_fpu_end()`. We should figure out a way to compile Hyperlight in a similar configuration, and see if it's a performance improvement to do so.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.