The machine is definitely powerful enough.
Coud it be that you are running the online node and not the offline? The online node generates the pbstream only if you ask it for using
rosservice call (see the definition of the service here).
You can run the offline node using
roslaunch cartographer_ros offline_backpack_2d.launch bag_filenames:=<path_to_your_bag_file> </path_to_your_bag_file>
This node by default writes the pbstream after it has finished. See more here.