22000*100 = 2.2 million triangles per second at 640x480 isn’t remarkable for a geforce2 - it’s capable of far more.
Many questions:
Are your 22,000 triangles big in the viewport? If they are then you may be experiencing the fill rate limit.
What do you mean by ‘lighting effect’? Is this standard OpenGL lighting? How many lights are you using?
Are you blending any of the triangles in the framebuffer (glEnable(GL_BLEND)) ?
How many of these 512x512 textures (32bit?) are you using per frame? (That’s how many “individual” textures, not the same one repeated)
Fog does impact performance a significant amount, so maybe this explains your low trispersecond.