mirror of
https://github.com/wassname/ray.git
synced 2026-06-29 02:47:10 +08:00
[docker] Run profiling without sudo (#10388)
* fix profiling for docker * small fixes * use name * do not import pwd on windows
This commit is contained in:
@@ -43,9 +43,10 @@ class ReporterServer(reporter_pb2_grpc.ReporterServiceServicer):
|
||||
duration = request.duration
|
||||
profiling_file_path = os.path.join(ray.utils.get_ray_temp_dir(),
|
||||
f"{pid}_profiling.txt")
|
||||
sudo = "sudo" if ray.utils.get_user() != "root" else ""
|
||||
process = subprocess.Popen(
|
||||
"sudo $(which py-spy) record -o {} -p {} -d {} -f speedscope"
|
||||
.format(profiling_file_path, pid, duration),
|
||||
(f"{sudo} $(which py-spy) record -o {profiling_file_path} -p {pid}"
|
||||
f" -d {duration} -f speedscope"),
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
shell=True)
|
||||
|
||||
@@ -18,6 +18,10 @@ import ray.gcs_utils
|
||||
import ray.ray_constants as ray_constants
|
||||
import psutil
|
||||
|
||||
pwd = None
|
||||
if sys.platform != "win32":
|
||||
import pwd
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Linux can bind child processes' lifetimes to that of their parents via prctl.
|
||||
@@ -780,3 +784,12 @@ def try_to_symlink(symlink_path, target_path):
|
||||
os.symlink(target_path, symlink_path)
|
||||
except OSError:
|
||||
return
|
||||
|
||||
|
||||
def get_user():
|
||||
if pwd is None:
|
||||
return ""
|
||||
try:
|
||||
return pwd.getpwuid(os.getuid()).pw_name
|
||||
except Exception:
|
||||
return ""
|
||||
|
||||
Reference in New Issue
Block a user