open-s4c / benchkit

A push-button end-to-end performance evaluation pipeline for automatically exploring the parameter space
MIT License
12 stars 17 forks source link

Missing Windows Support #119

Open TriedAngle opened 2 months ago

TriedAngle commented 2 months ago

starting a benchmark on windows doesn't work.

this function specifically in generic.py:

    @property
    def architecture(self) -> str:
        """
        Get the architecture of the platform.

        Returns:
            str: the architecture of the platform.
        """
        if self._architecture is None:
            self._architecture = self.comm.shell(
                "uname -m",
                print_input=False,
                print_output=False,
            ).strip()
        return self._architecture

will yield a FileNotFounderrror [WinError 2], which is also not handled by the current error handling and thus cannot have an "ignore_ret_codes". Just ignoring this function will create errors further down in the program.

apaolillo commented 2 months ago

Hello, thanks for raising! Indeed, Windows as a platform to run a benchmark is not supported. It would require heavy refactoring. However, you should be able to run Windows for a phone host; this has been already done in the past. What is your use case?

jschwe commented 2 months ago

I think being able to run the same benchmark on the same host hardware, but with varying OS can be useful. We wanted to use benchkit to go and reproduce https://github.com/servo/ipc-channel/issues/336 (which reports bad performance of the IPC library on linux hosts)

It would require heavy refactoring

I guess replacing shell commands like uname with python abstractions (e.g. sys.platform.uname()) would be a net-improvement, regardless of if we fully support windows as a host or not in the end.