mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Add FUSE dimension to microbenchmarks.
PiperOrigin-RevId: 532901869
This commit is contained in:
committed by
gVisor bot
parent
c3da0e4f0d
commit
116f28e9c5
@@ -3226,6 +3226,6 @@ go_repository(
|
||||
go_repository(
|
||||
name = "com_github_hanwen_go_fuse_v2",
|
||||
importpath = "github.com/hanwen/go-fuse/v2",
|
||||
sum = "h1:fOTuYWxywhaliwMobGTP/6NUCgGdal6pCpuch4MHCnU=",
|
||||
version = "v2.1.1-0.20220627082937-d01fda7edf17",
|
||||
sum = "h1:t5ivNIH2PK+zw4OBul/iJjsoG9K6kXo4nMDoBpciC8A=",
|
||||
version = "v2.3.0",
|
||||
)
|
||||
|
||||
@@ -50,6 +50,7 @@ require (
|
||||
github.com/google/go-cmp v0.5.9 // indirect
|
||||
github.com/google/gofuzz v1.1.0 // indirect
|
||||
github.com/googleapis/gnostic v0.5.5 // indirect
|
||||
github.com/hanwen/go-fuse/v2 v2.3.0 // indirect
|
||||
github.com/hashicorp/errwrap v1.0.0 // indirect
|
||||
github.com/hashicorp/go-multierror v1.1.0 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
|
||||
@@ -129,6 +129,8 @@ github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2c
|
||||
github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=
|
||||
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
|
||||
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||
github.com/hanwen/go-fuse/v2 v2.3.0 h1:t5ivNIH2PK+zw4OBul/iJjsoG9K6kXo4nMDoBpciC8A=
|
||||
github.com/hanwen/go-fuse/v2 v2.3.0/go.mod h1:xKwi1cF7nXAOBCXujD5ie0ZKsxc8GGSA1rlMJc+8IJs=
|
||||
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
|
||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||
github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI=
|
||||
@@ -150,11 +152,13 @@ github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
|
||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a h1:+J2gw7Bw77w/fbK7wnNJJDKmw1IbWft2Ul5BzrG1Qm8=
|
||||
github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a/go.mod h1:M1qoD/MqPgTZIk0EWKB38wE28ACRfVcn+cU08jyArI0=
|
||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
@@ -286,6 +290,7 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
|
||||
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
|
||||
@@ -67,6 +67,7 @@ syscall_test(
|
||||
|
||||
syscall_test(
|
||||
size = "large",
|
||||
add_fusefs = True,
|
||||
add_overlay = True,
|
||||
debug = False,
|
||||
test = "//test/perf/linux:open_benchmark",
|
||||
@@ -86,6 +87,7 @@ syscall_test(
|
||||
|
||||
syscall_test(
|
||||
size = "large",
|
||||
add_fusefs = True,
|
||||
add_overlay = True,
|
||||
debug = False,
|
||||
test = "//test/perf/linux:randread_benchmark",
|
||||
@@ -93,6 +95,7 @@ syscall_test(
|
||||
|
||||
syscall_test(
|
||||
size = "large",
|
||||
add_fusefs = True,
|
||||
add_overlay = True,
|
||||
debug = False,
|
||||
test = "//test/perf/linux:read_benchmark",
|
||||
@@ -112,6 +115,7 @@ syscall_test(
|
||||
|
||||
syscall_test(
|
||||
size = "large",
|
||||
add_fusefs = True,
|
||||
add_overlay = True,
|
||||
debug = False,
|
||||
test = "//test/perf/linux:seqwrite_benchmark",
|
||||
@@ -130,6 +134,7 @@ syscall_test(
|
||||
|
||||
syscall_test(
|
||||
size = "large",
|
||||
add_fusefs = True,
|
||||
add_overlay = True,
|
||||
debug = False,
|
||||
test = "//test/perf/linux:stat_benchmark",
|
||||
@@ -137,6 +142,7 @@ syscall_test(
|
||||
|
||||
syscall_test(
|
||||
size = "large",
|
||||
add_fusefs = True,
|
||||
add_overlay = True,
|
||||
debug = False,
|
||||
tags = ["nogotsan"],
|
||||
@@ -145,6 +151,7 @@ syscall_test(
|
||||
|
||||
syscall_test(
|
||||
size = "large",
|
||||
add_fusefs = True,
|
||||
add_overlay = True,
|
||||
debug = False,
|
||||
test = "//test/perf/linux:write_benchmark",
|
||||
|
||||
+43
-23
@@ -17,9 +17,11 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
golog "log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
"github.com/hanwen/go-fuse/v2/fs"
|
||||
"github.com/hanwen/go-fuse/v2/fuse"
|
||||
@@ -28,29 +30,15 @@ import (
|
||||
"gvisor.dev/gvisor/runsc/specutils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
loopbackRoot, err := fs.NewLoopbackRoot("/fuse")
|
||||
if err != nil {
|
||||
log.Warningf("could not create loopback root: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
opts := &fuse.MountOptions{DirectMount: true, Debug: true, AllowOther: true, Options: []string{"default_permissions"}}
|
||||
rawFS := fs.NewNodeFS(loopbackRoot, &fs.Options{NullPermissions: true, Logger: golog.Default()})
|
||||
server, err := fuse.NewServer(rawFS, "/tmp", opts)
|
||||
if err != nil {
|
||||
log.Warningf("could not create fuse server: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
// Clear umask so that it doesn't affect the mode bits twice.
|
||||
unix.Umask(0)
|
||||
var (
|
||||
dir = flag.String("dir", "/tmp", "The directory to mount the fuse filesystem on.")
|
||||
cmd = flag.String("cmd", "", "Command to execute after starting the fuse server. If empty, just wait after starting.")
|
||||
debug = flag.Bool("debug", true, "Whether to log FUSE traffic. Set to false for benchmarks.")
|
||||
)
|
||||
|
||||
go server.Serve()
|
||||
defer func() {
|
||||
server.Unmount()
|
||||
server.Wait()
|
||||
}()
|
||||
func waitOnMount(s *fuse.Server) {
|
||||
if _, _, err := specutils.RetryEintr(func() (uintptr, uintptr, error) {
|
||||
if err := server.WaitMount(); err != nil {
|
||||
if err := s.WaitMount(); err != nil {
|
||||
return 0, 0, err
|
||||
}
|
||||
return 0, 0, nil
|
||||
@@ -60,8 +48,40 @@ func main() {
|
||||
log.Warningf(`Could not mount fuse submount "/tmp": %v`, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
cmd := exec.Command(os.Args[1], os.Args[2:]...)
|
||||
if err := cmd.Run(); err != nil {
|
||||
}
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
loopbackRoot, err := fs.NewLoopbackRoot("/fuse")
|
||||
if err != nil {
|
||||
log.Warningf("could not create loopback root: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
opts := &fuse.MountOptions{DirectMountStrict: true, Debug: *debug, AllowOther: true, Options: []string{"default_permissions"}}
|
||||
rawFS := fs.NewNodeFS(loopbackRoot, &fs.Options{NullPermissions: true, Logger: golog.Default()})
|
||||
server, err := fuse.NewServer(rawFS, "/tmp", opts)
|
||||
if err != nil {
|
||||
log.Warningf("could not create fuse server: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
// Clear umask so that it doesn't affect the mode bits twice.
|
||||
unix.Umask(0)
|
||||
|
||||
if *cmd == "" {
|
||||
server.Serve()
|
||||
waitOnMount(server)
|
||||
return
|
||||
}
|
||||
go server.Serve()
|
||||
waitOnMount(server)
|
||||
defer func() {
|
||||
server.Unmount()
|
||||
server.Wait()
|
||||
}()
|
||||
|
||||
cmdArgs := strings.Split(strings.Trim(*cmd, "\""), " ")
|
||||
c := exec.Command(cmdArgs[0], cmdArgs[1:]...)
|
||||
if err := c.Run(); err != nil {
|
||||
log.Warningf(err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
+3
-1
@@ -517,7 +517,9 @@ func runTestCaseRunsc(testBin string, tc *gtest.TestCase, args []string, t *test
|
||||
if err != nil {
|
||||
fatalf("cannot find fuse: %v", err)
|
||||
}
|
||||
spec = testutil.NewSpecWithArgs(append([]string{fuseServer, testBin}, args...)...)
|
||||
cmdArgs := append([]string{testBin}, args...)
|
||||
cmd := strings.Join(cmdArgs, " ")
|
||||
spec = testutil.NewSpecWithArgs([]string{fuseServer, fmt.Sprintf("--debug=%t", *debug), fmt.Sprintf("--cmd=\"%s\"", cmd)}...)
|
||||
} else {
|
||||
spec = testutil.NewSpecWithArgs(append([]string{testBin}, args...)...)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user