On Thu Aug 31 12:26:04 2023 +0000, Yuxuan Shui wrote:
> I see, in current version all threads Waits on the same Address, so the
> address' futex queue is contended. Threads are spinning on
> `queue->lock`, so there is a chance for the lock to be released and the
> threads never actually call `futex` (in this synthetic test anyway).
> Whereas with this MR threads are generally waiting on different
> addresses, so they always enter futex.
Another observation is current SRWLOCK is pretty unfair (again, in this one test).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3504#note_43962
On Thu Aug 31 12:25:16 2023 +0000, Yuxuan Shui wrote:
> oh my, native SRWLOCK is really really fast. Even when compared to the
> current, no wait list version.
> I noticed with exclusive locks, current SRWLOCK would show >100% CPU
> usage. I think this means there are some spinning going on?
I see, in current version all threads Waits on the same Address, so the address' futex queue is contended. Threads are spinning on `queue->lock`, so there is a chance for the lock to be released and the threads never actually call `futex` (in this synthetic test anyway).
Whereas with this MR threads are generally waiting on different addresses, so they always enter futex.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3504#note_43958
Running the tests on AMD requires rebuilding the Docker image, unfortunately, so the pipelines for this MR won't work until the MR itself is accepted (and the image is regenerated).
--
v9: ci: Briefly document the CI setup.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/318
oh my, native SRWLOCK is really really fast. Even when compared to the current, no wait list version.
I noticed with exclusive locks, current SRWLOCK would show >100% CPU usage. I think this means there are some spinning going on?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3504#note_43949
Running the tests on AMD requires rebuilding the Docker image, unfortunately, so the pipelines for this MR won't work until the MR itself is accepted (and the image is regenerated).
--
v8: ci: Briefly document the CI setup.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/318
--
v5: mshtml: Implement Cycle Collection for XMLHttpRequest.
mshtml: Implement Cycle Collection for HTMLPerformanceTiming.
mshtml: Move PerformanceTiming related fields to the window.
mshtml: Move HTMLPerformanceNavigation related fields to the window.
mshtml: Implement Cycle Collection for inner windows.
mshtml: Get rid of NULL checks for the dispex vtbl.
mshtml: Implement Cycle Collection for outer windows.
mshtml: Implement Cycle Collection for HTMLLocation.
mshtml: Separate the HTMLLocation from the outer window.
mshtml: Actually traverse the object-specific edges.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3645
> Mostly because it's not terribly practical to check in anything that outputs more than one or two lines. I think we should adopt the vkd3d_bytecode_buffer scheme and track the status on the vkd3d_string_buffer instead of attempting to propagate errors up from vkd3d_string_buffer_resize().
Agreed. What I don't like is that no check of allocation failure is done at all.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/310#note_43932
--
v2: dinput: Get rid of duplicated winetest helpers.
include: Avoid using strcmp directly in wine/test.h.
include: Introduce winetest wrappers for vprintf and GetTickCount.
include: Pass a temporary buffer to winetest_elapsed.
include: Rename winetest_printf to winetest_print_location.
include: Initialize winetest global counters to 0.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3691