Re: slowest tap tests - split or accelerate?

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Andres Freund <andres(at)anarazel(dot)de>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: slowest tap tests - split or accelerate?
Date: 2022-01-20 21:54:59
Message-ID: 3ba5bec5-7713-3021-a96c-0347d2681cd1@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


On 1/19/22 21:18, Andres Freund wrote:
> Hi,
>
> On 2022-01-19 09:42:31 -0800, Andres Freund wrote:
>> Both ours have this. Unfortunately on windows cp doesn't natively
>> exist. Although git does provide it. I tried a few things that appear to be
>> natively available (time is best of three executions):
>>
>> gnu cp from git, cp -a tmp_install\initdb_template t\
>> 670ms
>>
>> xcopy.exe /E /Q tmp_install\initdb_template t\
>> 638ms
> This errors out if there's any forward slashes in paths, thinking it's a
> flag. Seems out.
>
>
>> robocopy /e /NFL /NDL tmp_install\initdb_template t\
>> 575ms
>>
>> So I guess we could use robocopy? That's shipped as part of windows starting in
>> windows 10... xcopy has been there for longer, so I might just default to that.
> It's part of of the OS back to at least windows 2016. I've found some random
> links on the webs saying that it's included "This command is available in
> Vista and Windows 7 by default. For Windows XP and Server 2003 this tool can
> be downloaded as part of Server 2003 Windows Resource Kit tools. ".
>
> Given that our oldest supported msvc version only runs on Windows 7 upwards
> [2], I think we should be good?
>
>
> Alternatively we could lift copydir() to src/common? But that seems like a bit
> more work than I want to put in.
>
>
> For a second I was thinking that using something like copy --reflink=auto
> could make a lot of sense for machines like florican, removing most of the IO
> from a "templated initdb". But it looks like freebsd doesn't have that, and
> it'd be a pain to figure out whether cp has --reflink.

FYI, the buildfarm code has this. It doesn't need backslashed paths, you
just need to quote the paths, which you should probably do anyway:

sub copydir
{
    my ($from, $to, $logfile) = @_;
    my ($cp, $rd);
    if ($PGBuild::conf{using_msvc})
    {
        $cp = "robocopy /nfl /ndl /np /e /sec ";
        $rd = qq{/LOG+:"$logfile" >nul};
    }
    else
    {
        $cp = "cp -r";
        $rd = qq{> "$logfile"};
    }
    system(qq{$cp "$from" "$to" $rd 2>&1});
    ## no critic (RequireLocalizedPunctuationVars)
    $? = 0 if ($cp =~ /robocopy/ && $? >> 8 == 1);
    return;
}

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2022-01-20 22:00:12 Re: Removing more vacuumlazy.c special cases, relfrozenxid optimizations
Previous Message Dave Cramer 2022-01-20 21:48:19 Re: GSoC 2022