mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 02:08:13 +00:00 
			
		
		
		
	agnhost: merge registry.k8s.io/stress:v1 (github.com/vishh/stress)
Merge vishh/stress@eab4e3384b into agnhost. Old usage: `stress -mem-alloc-size 12Mi -mem-alloc-sleep 10s -mem-total 4Gi` New usage: `agnhost stress --mem-alloc-size 12Mi --mem-alloc-sleep 10s --mem-total 4Gi` This is a part of the steps to migrate from legacy Schema 1 images (issue 123146) Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
This commit is contained in:
		
							
								
								
									
										21
									
								
								LICENSES/third_party/forked/vishhstress/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								LICENSES/third_party/forked/vishhstress/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2024 Vish Kannan | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
| @@ -48,6 +48,7 @@ import ( | ||||
| 	tcpreset "k8s.io/kubernetes/test/images/agnhost/tcp-reset" | ||||
| 	testwebserver "k8s.io/kubernetes/test/images/agnhost/test-webserver" | ||||
| 	"k8s.io/kubernetes/test/images/agnhost/webhook" | ||||
| 	"k8s.io/kubernetes/third_party/forked/vishhstress" // MIT License | ||||
| ) | ||||
|  | ||||
| var Version = "development" | ||||
| @@ -86,6 +87,7 @@ func main() { | ||||
| 	rootCmd.AddCommand(webhook.CmdWebhook) | ||||
| 	rootCmd.AddCommand(openidmetadata.CmdTestServiceAccountIssuerDiscovery) | ||||
| 	rootCmd.AddCommand(grpchealthchecking.CmdGrpcHealthChecking) | ||||
| 	rootCmd.AddCommand(vishhstress.CmdStress) | ||||
|  | ||||
| 	// NOTE(claudiub): Some tests are passing logging related flags, so we need to be able to | ||||
| 	// accept them. This will also include them in the printed help. | ||||
|   | ||||
							
								
								
									
										21
									
								
								third_party/forked/vishhstress/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								third_party/forked/vishhstress/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2024 Vish Kannan | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
							
								
								
									
										99
									
								
								third_party/forked/vishhstress/stress.go
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								third_party/forked/vishhstress/stress.go
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,99 @@ | ||||
| /* | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2024 Vish Kannan | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
| */ | ||||
|  | ||||
| // Package vishhstress was forked from <https://github.com/vishh/stress/tree/eab4e3384bcad9899b8b801b4a1917a758e97d96> | ||||
| // so that it can be consumed from agnhost. | ||||
| package vishhstress | ||||
|  | ||||
| import ( | ||||
| 	"io" | ||||
| 	"io/ioutil" | ||||
| 	"os" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/spf13/cobra" | ||||
| 	"k8s.io/apimachinery/pkg/api/resource" | ||||
| 	"k8s.io/klog/v2" | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	argMemTotal         string | ||||
| 	argMemStepSize      string | ||||
| 	argMemSleepDuration time.Duration | ||||
| 	argCpus             int | ||||
| 	buffer              [][]byte | ||||
| ) | ||||
|  | ||||
| // CmdStress is used by agnhost Cobra. | ||||
| var CmdStress = &cobra.Command{ | ||||
| 	Use:   "stress", | ||||
| 	Short: "Lightweight compute resource stress utlity", | ||||
| 	Args:  cobra.NoArgs, | ||||
| 	Run:   main, | ||||
| } | ||||
|  | ||||
| func init() { | ||||
| 	flags := CmdStress.Flags() | ||||
| 	flags.StringVar(&argMemTotal, "mem-total", "0", "total memory to be consumed. Memory will be consumed via multiple allocations.") | ||||
| 	flags.StringVar(&argMemStepSize, "mem-alloc-size", "4Ki", "amount of memory to be consumed in each allocation") | ||||
| 	flags.DurationVar(&argMemSleepDuration, "mem-alloc-sleep", time.Millisecond, "duration to sleep between allocations") | ||||
| 	flags.IntVar(&argCpus, "cpus", 0, "total number of CPUs to utilize") | ||||
| } | ||||
|  | ||||
| func main(cmd *cobra.Command, _ []string) { | ||||
| 	total := resource.MustParse(argMemTotal) | ||||
| 	stepSize := resource.MustParse(argMemStepSize) | ||||
| 	klog.Infof("Allocating %q memory, in %q chunks, with a %v sleep between allocations", total.String(), stepSize.String(), argMemSleepDuration) | ||||
| 	burnCPU() | ||||
| 	allocateMemory(total, stepSize) | ||||
| 	klog.Infof("Allocated %q memory", total.String()) | ||||
| 	select {} | ||||
| } | ||||
|  | ||||
| func burnCPU() { | ||||
| 	src, err := os.Open("/dev/zero") | ||||
| 	if err != nil { | ||||
| 		klog.Fatalf("failed to open /dev/zero") | ||||
| 	} | ||||
| 	for i := 0; i < argCpus; i++ { | ||||
| 		klog.Infof("Spawning a thread to consume CPU") | ||||
| 		go func() { | ||||
| 			_, err := io.Copy(ioutil.Discard, src) | ||||
| 			if err != nil { | ||||
| 				klog.Fatalf("failed to copy from /dev/zero to /dev/null: %v", err) | ||||
| 			} | ||||
| 		}() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func allocateMemory(total, stepSize resource.Quantity) { | ||||
| 	for i := int64(1); i*stepSize.Value() <= total.Value(); i++ { | ||||
| 		newBuffer := make([]byte, stepSize.Value()) | ||||
| 		for i := range newBuffer { | ||||
| 			newBuffer[i] = 0 | ||||
| 		} | ||||
| 		buffer = append(buffer, newBuffer) | ||||
| 		time.Sleep(argMemSleepDuration) | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Akihiro Suda
					Akihiro Suda