Spawn grass manually

Hi. I am working on procedural landscape generation. My current result - I am generating large static plain mesh and setting height for each vertex and then applying material. It works - I can generate fields, hills and mountains and texture them.
Now I want create grass. At first I tried to spawn grass blueprints on all terrain manually. It decreased my FPS to 15 (40000 grass objects).
Then I tried to use Grass output node in terrain material. But as I understand, Procedural Grass System can work only with Landscape (but in the same time I saw possibility to draw grass on static meshes).
I have several questions:

  1. What exactly does Procedural Grass System do? Is there any kind of magic or it just spawns grass meshes around of player, using different levels of LODs?
  2. Do I understand correctly that I have to implement part of its functionality - spawning grass meshes around of player and remove them at some distance?
  3. I tried to spawn Grass blueprint (which contains Grass static mesh). May it be better to spawn static meshes directly by adding them as components to my terrain actor?

Ok, I found problem. I used grass static mesh with enabled shadows :D. When I disable shadows - engine draws 40k meshes without problems.