Shortest Job First

Shortest Job First (SJF) is provably optimal for minimizing average turnaround time. Why isn't it used in practice for general-purpose OS scheduling?