{"id":15861919,"url":"https://github.com/yakdriver/awsprovmemprof","last_synced_at":"2026-01-16T01:01:06.030Z","repository":{"id":189007646,"uuid":"679863414","full_name":"YakDriver/awsprovmemprof","owner":"YakDriver","description":"Terraform AWS Provider memory usage changes","archived":false,"fork":false,"pushed_at":"2023-09-20T18:16:47.000Z","size":18085,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T20:34:35.367Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YakDriver.png","metadata":{"files":{"readme":"README.md","changelog":"changes_over_time.numbers","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-17T19:38:11.000Z","updated_at":"2023-08-17T19:38:12.000Z","dependencies_parsed_at":"2024-10-05T22:21:13.800Z","dependency_job_id":"6cd93700-663a-42b9-8c41-56a7297bc6e7","html_url":"https://github.com/YakDriver/awsprovmemprof","commit_stats":null,"previous_names":["yakdriver/awsprovmemprof"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/YakDriver/awsprovmemprof","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YakDriver%2Fawsprovmemprof","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YakDriver%2Fawsprovmemprof/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YakDriver%2Fawsprovmemprof/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YakDriver%2Fawsprovmemprof/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YakDriver","download_url":"https://codeload.github.com/YakDriver/awsprovmemprof/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YakDriver%2Fawsprovmemprof/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28475122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T00:15:39.755Z","status":"ssl_error","status_checked_at":"2026-01-16T00:15:32.174Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-05T22:21:08.413Z","updated_at":"2026-01-16T01:01:05.993Z","avatar_url":"https://github.com/YakDriver.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# awsprovmemprof\n\nThe memory improvement at v5.14.0 comes from using [regexache](https://github.com/YakDriver/regexache).\n\nThis graph shows the changes in memory usage while running a single VPC acceptance test over time.\n\n![Memory Usage Changes Graph](memusechange.png \"Memory Usage Changes\")\n\nThis graph shows the percent change in memory usage while running a single VPC acceptance test over time.\n\n![Percent Memory Changes](memusepctchange.png \"Percent Memory Changes\")\n\n## Biggest changes\n\nThese are the changes larger than +/- 5% since v3.69.0.\n\n| From Ver | To Ver | From Alloc (G) | To Alloc (G) | % Change | Compare |\n| --- | --- | --- | --- | --- | --- |\n| v3.75.2 | v3.76.0 | 1.13 | 1.07 | -5.3% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v3.75.2...v3.76.0) |\n| v3.76.0 | v3.76.1 | 1.07 | 1.18 | 10.3% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v3.76.0...v3.76.1) |\n| v4.13.0 | v4.14.0 | 1.21 | 1.68 | 38.8% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v4.13.0...v4.14.0) |\n| v4.28.0 | v4.29.0 | 1.66 | 1.95 | 17.5% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v4.28.0...v4.29.0) |\n| v4.32.0 | v4.33.0 | 1.91 | 2.03 | 6.3% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v4.32.0...v4.33.0) |\n| v4.33.0 | v4.34.0 | 2.03 | 2.39 | 17.7% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v4.33.0...v4.34.0) |\n| v4.35.0 | v4.36.0 | 2.36 | 1.41 | -40.3% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v4.35.0...v4.36.0) |\n| v4.38.0 | v4.39.0 | 1.45 | 1.73 | 19.3% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v4.38.0...v4.39.0) |\n| v4.66.0 | v4.67.0 | 1.89 | 2.43 | 28.6% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v4.66.0...v4.67.0) |\n| v5.0.1 | v5.1.0 | 2.45 | 3.50 | 42.9% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v5.0.1...v5.1.0) |\n| v5.5.0 | v5.6.0 | 3.50 | 4.18 | 19.4% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v5.5.0...v5.6.0) |\n| v5.6.0 | v5.7.0 | 4.18 | 6.74 | 61.2% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v5.6.0...v5.7.0) |\n| v5.13.1 | v5.14.0 | 6.66 | 5.67 | -14.9% | [Compare](https://github.com/hashicorp/terraform-provider-aws/compare/v5.13.1...v5.14.0) |\n\n## Delve deeper into these profiles\n\nAll the profiles I created are included in this repo. You can look into them more deeply.\n\nTo read the profiles install [`pprof`](https://github.com/google/pprof):\n\n```\ngo install github.com/google/pprof@latest\n```\n\nand `graphviz`:\n\n```\nbrew install graphviz\n```\n\nClone the repo and graphically examine, for example, the `v5.12.0` profile using a random available port `4599`:\n\n```\ngit clone https://github.com/YakDriver/awsprovmemprof.git\ncd awsprovmemprof\ncd vpc\npprof -http=localhost:4599 mem-v5.12.0.prof\n```\n\nThere is a lot more you can do with the profiles using [`pprof`](https://github.com/google/pprof).\n\n## Method\n\nTo create your own profiles using my method, here it is.\n\nIn order to find the memory used, I ran a single, simple acceptance test (`TestAccVPC_basic`) to minimize noise from parallelism and the testing framework. I used the same version of Go (v1.21.0) and Terraform itself (v1.5.5) for all the tests to ensure differences were in the provider. I profiled with Go and read the profile with [`pprof`](https://github.com/google/pprof).\n\nThis command will create CPU and memory profiles of the test run:\n\n```sh\nTF_ACC=1 go test \\\n    ./internal/service/ec2/... \\\n    -v -parallel 1 \\\n    -run='^TestAccVPC_basic$' \\\n    -cpuprofile cpu.prof \\\n    -memprofile mem.prof \\\n    -bench \\\n    -timeout 60m\n```\n\nTo read the profile, as prerequisites, install [`pprof`](https://github.com/google/pprof):\n\n```\ngo install github.com/google/pprof@latest\n```\n\nand `graphviz`:\n\n```\nbrew install graphviz\n```\n\nRandomly picking an available port `4599`, you can view the profile graphically in your browser:\n\n```sh\npprof -http=localhost:4599 mem.prof\n```\n\nThis is a simple script I used:\n\n```bash\nexport ver=v3.74.3\ngit checkout ${ver}\nTF_ACC=1 go test \\\n    ./internal/service/ec2/... \\\n    -v -parallel 1 \\\n    -run='^TestAccVPC_basic$' \\\n    -cpuprofile cpu-${ver}.prof \\\n    -memprofile mem-${ver}.prof \\\n    -bench \\\n    -timeout 60m\npprof -http=localhost:4599 mem-${ver}.prof\n```\n\nOnce `pprof` loads the profile in the browser, click `View` and `Flame Graph` to see a conveniently tallied total:\n\n![Using pprof](usingpprof.png \"Using pprof\")\n\nThere is a lot more you can do with a profile using [`pprof`](https://github.com/google/pprof).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyakdriver%2Fawsprovmemprof","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyakdriver%2Fawsprovmemprof","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyakdriver%2Fawsprovmemprof/lists"}