gg:实践指南

作者:袖梨 2026-09-10

真正理解gg,要从它处理的任务开始:斯坦福开发的构建系统,以脚本方式描述依赖并执行可复现构建任务。这类软件开发工具真正难在依赖、接口和异常处理往往比主路径更影响采用,仓库说明只能作为第一层证据。与其反复读介绍,不如在隔离分支完成一个可回滚的小任务,再依据安装步骤、接口契约、测试结果和错误信息做取舍。它更像给需要可检查开发流程而非单次演示的工程师准备的可审查方案,是否长期使用应由试跑数据决定。

StanfordSNR/gg 项目截图 1

gg

研究论文

“从笔记本电脑到 Lambda:将日常工作外包给数千个瞬态功能容器”,2019 年 USENIX 年度技术会议 (USENIX ATC '19)。

演示

在 AWS Lambda 上使用 gg 构建 FFmpeg

技术视频

gg在2019年USENIX年度技术大会(USENIX ATC '19)上亮相。该演讲于 2019 年 7 月 11 日发表。

构建方向

注意:如果您精通 Docker,请遵循 这条指令。

要构建 gg 您需要以下软件包:

  • gcc >= 7.0
  • protobuf-compiler, libprotobuf-dev >= 3.0
  • libcrypto++-dev >= 5.6.3
  • python3
  • libcap-dev
  • libncurses5-dev
  • libboost-dev
  • libssl-dev
  • autopoint
  • help2man
  • texinfo
  • automake
  • libtool
  • pkg-config
  • libhiredis-dev
  • python3-boto3

您可以通过运行以下命令在 Ubuntu(17.04 或更高版本)中安装这些依赖项:

sudo apt-get install gcc-7 g++-7 protobuf-compiler libprotobuf-dev 
                     libcrypto++-dev libcap-dev 
                     libncurses5-dev libboost-dev libssl-dev autopoint help2man 
                     libhiredis-dev texinfo automake libtool pkg-config python3-boto3

要构建 gg,请运行以下命令:

./fetch-submodules.sh
./autogen.sh
./configure
make -j$(nproc)
sudo make install

用途

环境变量

要使用 gg必须设置以下环境变量:

  • GG_MODELPATH => <gg-source-dir>/src/models/wrappers 的绝对路径
  • GG_STORAGE_URI =>
    • S3s3://<bucket-name>/?region=<bucket-region>
    • Redisredis://<username>:<password>@<host>[:<port>]
  • GG_LAMBDA_ROLE => 将分配给执行的 Lambda 的角色。 功能。必须有 AmazonS3FullAccessAWSLambdaBasicExecutionRole 权限。
  • AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY => 您的 AWS 访问密钥
  • AWS_REGION => 您的 AWS 区域,安装了这些功能

安装功能

设置环境变量后,需要在上面安装gg功能 AWS Lambda。为此:

cd src/remote/
make ggfunctions

示例

要使用 gg 构建 mosh,首先我们 查看 mosh 源代码:

git clone https://github.com/mobile-shell/mosh

确保您拥有构建 mosh 的所有依赖项。在Ubuntu中, 你可以运行:

sudo apt-get install -y automake libtool g++ protobuf-compiler libprotobuf-dev 
                        libboost-dev libutempter-dev libncurses5-dev 
                        zlib1g-dev libio-pty-perl libssl-dev pkg-config

mosh目录中,首先需要准备mosh来构建:

./autogen.sh
./configure

然后,

gg init # creates .gg directory
gg infer make -j$(nproc) # creates the thunks

现在,要在 AWS Lambda 上以 100 路并行度实际编译 mosh-server, 你可以执行(重要的是--jobs出现在--engine之前):

gg force --jobs 100 --engine lambda src/frontend/mosh-server

相关文章

精彩推荐