chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
||||
import ray
|
||||
|
||||
|
||||
# NOTE(swang): This test currently fails in ASAN mode because it tests a
|
||||
# performance issue that is likely sensitive to timing.
|
||||
@pytest.mark.skipif(platform.system() == "Windows", reason="Hangs on Windows.")
|
||||
def test_spill_fusion(fs_only_object_spilling_config, shutdown_only):
|
||||
# Limit our object store to 75 MiB of memory.
|
||||
object_spilling_config, temp_folder = fs_only_object_spilling_config
|
||||
min_spilling_size = 10 * 1024 * 1024
|
||||
ray_context = ray.init(
|
||||
num_cpus=1,
|
||||
object_store_memory=75 * 1024 * 1024,
|
||||
_system_config={
|
||||
"max_io_workers": 1,
|
||||
"object_spilling_config": object_spilling_config,
|
||||
"min_spilling_size": min_spilling_size,
|
||||
"object_spilling_threshold": 0.8,
|
||||
# Set the timeout between create retries high so that this test
|
||||
# passes in ASAN and debug mode.
|
||||
"object_store_full_delay_ms": 1000,
|
||||
},
|
||||
)
|
||||
|
||||
object_size = 1024 * 1024
|
||||
# Fill up the object store 4 times with small objects.
|
||||
# We trigger spilling at 80% and the min spill size is
|
||||
# about 10 objects.
|
||||
xs = [ray.put(np.zeros(object_size // 8)) for _ in range(300)] # noqa: F841
|
||||
|
||||
spill_dir = os.path.join(
|
||||
temp_folder,
|
||||
f"{ray._private.ray_constants.DEFAULT_OBJECT_PREFIX}_{ray_context['node_id']}",
|
||||
)
|
||||
under_min, over_min = 0, 0
|
||||
for filename in os.listdir(spill_dir):
|
||||
size = os.stat(os.path.join(spill_dir, filename)).st_size
|
||||
if size < 2 * object_size // 8:
|
||||
under_min += 1
|
||||
else:
|
||||
over_min += 1
|
||||
# We should almost always spill fused objects.
|
||||
assert over_min > under_min
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(pytest.main(["-sv", __file__]))
|
||||
Reference in New Issue
Block a user