Way more polys than you need, use a ClothNurb to get smoothing of a simpler mesh. The same goes for the torus, fewer polys to keep the calculations to a minimum. However, it’s still not going to be easy doing it that way, cloth was meant for flags and clothing colliding with legs etc. not cloth to cloth interactions that are that complex. I would try to model it if you are not animating the pull. Here’s a quicky I made, Probably a few more polys would be good, I scaled the width with the bottom polys selected and Soft Selection on but if I did it again I would probably use point selections so I could get a sharper “tuck point”. Then I stagger-scaled the bottom up by hand one fold at a time. Not as good as it could be. Cloth could be then used on the shaped curtain but I tried that and the scaled bits are so close together they are inside the eps values and it is just chaotic.
893_curtain3.zip