These files show how the metersPerUnit stage metadata works.
metersPerUnit = 1
 metersPerUnit_1.usda, usdrecord 22.08
metersPerUnit_1.usda, usdrecord 22.08
metersPerUnit = 10
 metersPerUnit_10.usda, usdrecord 22.08
metersPerUnit_10.usda, usdrecord 22.08
This stage sets metersPerUnit = 100 and also sublayers metersPerUnit_1.usda and metersPerUnit_10.usda with different values.
USD does not auto-scale layers with divergent metersPerUnit. As a result, all three cubes in this file have the same size.
 metersPerUnit_mix.usda, usdrecord 22.08
metersPerUnit_mix.usda, usdrecord 22.08
#usda 1.0
(
    customLayerData = {
        string copyright = "Copyright 2022 Apple Inc. All rights reserved."
    }
    metersPerUnit = 100
    subLayers = [
        @metersPerUnit_1.usda@,
        @metersPerUnit_10.usda@,
        @../../../_common/axis.usda@
    ]
    upAxis = "Y"
    defaultPrim = "World"
)
def "World"
{
    def Cube "cube_100"
    {
    }
    over "cube_1"
    {
        double3 xformOp:translate = (3, 0, 0)
        uniform token[] xformOpOrder = ["xformOp:translate"]
    }
    over "cube_10"
    {
        double3 xformOp:translate = (6, 0, 0)
        uniform token[] xformOpOrder = ["xformOp:translate"]
    }
}