![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Para acceder a la memoria RAM necesitas modificar los privilegios de acceso a dicho objeto (restringido por su naturaleza crítica), luego realizar un mapeado del mismo en tu proceso y leer por bloques razonables múltiplos de 4 Kb que es el tamaño del PAGE_SIZE en arquitecturas x86.
La taza de trasferencia pico de las memorias utilizadas en la actualidad es de 1.6 Gb por segundo en DDR-200 a los fascinantes 8.5 Gb/s de DDR2-1066. Si tu objetivo es leer la memoria virtual utilizada por tu proceso, la cosa cambia un poco puesto que en la misma no solo interviene la memoria física, sino también la temporal en la que el disco duro es el huésped de los datos... si realizas un proceso X de E/S varias veces el SO realiza un caché y la velocidad mejora considerablemente moviendo la información "de un lado para otro" para dicho fin. Para cronometrar tus procesos usa GetTickCount como comenta coso, considerando que en memoria virtual no hay la limitante del tamaño de paginación, también considera los parámetros con los que reservas la memoria (MEM_MOVEABLE, ZEROINIT, etc, etc.), pues los mismos cambiarán la forma en que el SO optimizará dicho recurso. Saludos |
|
#2
|
|||
|
|||
|
Cita:
Cabe decir que hay que tener en cuenta los accesos a la caché del procesador (en todos los niveles). También hay que pensar que cuando uno o varios procesos ocupan todo el espacio de memoria física, el sistema operativo irá paginando a disco y reemplazando aquellos segmentos según un criterio (LRU, FIFO, aleatorio, etc...), aunque bien es cierto que los Sistemas operativos optan por reducir la frecuencia de fallos más que encontrar un buen algoritmo de reemplazo, pero esto no viene al caso. A parte, existe la paginación a nivel de hardware, cuyas páginas son de tamaño fijo. Hoy en dia se suele utilizar la segmentación paginada que es una mezcla de los dos. Para evitar que cierta región de memoria no sea paginada se suelen utilizar drivers, que son precisamente eso: procesos que se ejecutan en espacio protegido (modo kernel) y que no son paginados. Por tanto es difícil medir cuando la RAM se llena y cuándo no; puedes establecer una cota basándote en la capacidad de ésta, no obstante si realmente quieres testear la RAM puedes optar por hacer un driver. Un saludo. |
|
#3
|
||||
|
||||
|
Cita:
Cita:
Cita:
Saludos |
|
#4
|
||||
|
||||
|
amigos mio veo que se estan confundiendo pues yo estoy hablando de la memoria ram fisica no de la memoria virtual ni la memoria cache L2 , lo que quiero es medir el tiempo de lectura/escritura de la memoria ram que por cierto todavia no e podido hacer pues le pido que me ofrescan un ejemplo en codigo para tener por donde empezar no le pido mucho solo un ejemplo sencillo pues lo acomodare a mi necesidad
|
|
#5
|
||||
|
||||
|
Si quieres saltarte las cachés deberás currártelo más. Por un lado, deberás utilizar datos aleatorios, pero muy aleatorios, para evitar que el sistema de predicción del microprocesador utilice la caché. También debería cambiar la dirección de memoria donde realiza dichas lecturas y escrituras por lo mismo. Por otro lado, el código ejecutable también se cachea y se "predice", lo cual también afecta.
Hoy en día es muy difícil establecer el rendimiento de un algoritmo ya que los programas de pruebas suelen ser mucho más pequeños y con necesidades menores de memoria, lo cual hace que se falseen los datos por culpa de las cachés. Fíjate en cómo funcionan esos programas de comprobación de memoria RAM. Observa que utiliza multitud de patrones diferentes (los va nombrando según los utiliza, algunos incluso muestran en pantalla representaciones gráficas de lo que están haciendo) precisamente para que el trabajo se realice en la memoria RAM real y no en las cachés o en los registros. Tal vez debas echar un vistazo al código fuente de alguno de estos programas (hay varios para GNU/Linux), aunque creo que todos están escritos en C y ensamblador, que en mi opinión son más adecuados que Pascal para estos menesteres (por temas de control de optimizaciones, no por potencia o capacidad).
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment Última edición por Ñuño Martínez fecha: 29-08-2008 a las 09:49:27. |
|
#6
|
||||
|
||||
|
si estas pruebas utilizan de alguna forma la cache entonces me gustaria ver un ejemplo de codigo utilizando la cache en delphi. por otro lado me puse hacer una prueba de este tipo con el programa pc winsid y es verdad utiliza tanto la cache como el procesador para realizar la prueba
|
|
#7
|
|||
|
|||
|
Cita:
![]() Cita:
Cita:
Un saludo. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| como descargar Rave y QReport para delphi 2007 | kurono | Varios | 2 | 21-08-2008 19:54:04 |
| ¿como descargar archivos por fecha y hora.? | JXJ | Firebird e Interbase | 3 | 07-09-2007 20:30:38 |
| ¿Cómo descargar Archivo de Muchas Fuentes? | JXJ | Varios | 3 | 14-03-2007 02:09:08 |
| Como descargar una imagen a partir de la url | Oxis | Internet | 2 | 20-07-2006 20:04:56 |
| Como descargar una pagina web completa??? | jhonny | Internet | 2 | 15-07-2006 17:58:23 |
|