С небольшой информацией, которую вы дали: Parallel::ForkManager
звучит как подходящий инструмент. Но вы, вероятно, получите лучшую помощь, если подробно расскажете о своей проблеме.
Распараллеливание всегда трудная проблема. То, сколько вы можете надеяться получить, во многом зависит от характера задачи. Например, вы ищете конкретную строку в файле? Или конкретная запись фиксированного размера? Или все куски, которые соответствуют определенному битовому шаблону? Обрабатываете ли вы файл от начала до конца, или вы можете пропустить некоторые части, или вы делаете много перетасовок назад и вперед? и т.д.
Является ли файл 8 ГБ абсолютным ограничением, или вы можете реорганизовать данные, чтобы их было легче найти?
При скорости, которую вы предоставляете, если вы просто просматриваете файл один раз, ввод / вывод не является узким местом, но он близок. Это может быть узким местом, если другие процессы одновременно обращаются к диску. Возможно, стоит настроить шаблоны доступа к диску; это будет в некоторой степени зависеть от операционной системы и файловой системы.