Opera torrent download usa toda a memória - nenhum processo culpado encontrado

2

Estou baixando torrent com o despejo de dados do StackExchange. Havia cerca de 40% feito, hoje quando eu cliquei em continuar, o computador pendurou e ficou praticamente inutilizável por cerca de 30 minutos.

Após alguns minutos, o explorer do processo foi aberto e descobri que o consumo de memória estava no nível de 95% (de 3 GB), o que explica por que o processamento de cada clique demora muito. No entanto, embora eu tenha exibido todos os processos, não consegui encontrar ninguém que estivesse usando tanta memória. A própria Opera estava usando cerca de 150MB. Avast era quase invisível quando se trata de uso de memória e consumo de CPU.

Minha máquina tem 3 GB de RAM e o Windows 7 de 64 bits instalado. O antivírus é o Avast. O despejo de dados tem cerca de 11 GB.

Qual processo poderia causar tanto uso de memória na fase de verificação de arquivos torrent? Esse processo era invisível no modo de mostrar processos de todos os usuários.

Danubian Sailor
fonte

Respostas:

3

Pegue a ferramenta SysInternal chamada RAMMap.

Sua memória está sendo consumida pelo que é conhecido como arquivos mapeados na memória . É nesse ponto que o sistema operacional carrega uma parte de um arquivo grande na memória para acesso a uma solicitação de processo porque é muito mais eficiente para solicitações aleatórias do que buscar repetidamente locais no arquivo no disco.

Programas de torrent fazem um MUITO de acesso aleatório aos arquivos, então eu estaria disposto a apostar que o Opera Torrent mmaps ( mapas de memória seus arquivos; com toda a honestidade, essa é a melhor coisa para um cliente de torrent fazer.

O problema aqui é que durante a verificação de arquivos, o Opera Torrent acessará o arquivo inteiro sequencialmente. Isso faz com que o Windows carregue o arquivo inteiro na memória ou tente. Normalmente, ele só tem as partes do arquivo que estão sendo baixadas na memória, mas agora toda a sua memória está sendo usada desde que o Windows pensa que o Opera Torrent precisa de todo o arquivo para ficar na memória.

A razão pela qual o arquivo mmapped não é atribuído ao Opera Torrent é porque os arquivos mmapped são compartilhados entre os processos. Claro, o Opera Torrent pode ter solicitado que o arquivo seja mapeado na memória, mas se você abri-lo com o 7Zip, ele terá acesso ao mesmo arquivo mapeado na memória. Não há necessidade de perder memória carregando duas vezes! Mas agora, quem "possui" o arquivo?

Darth Android
fonte
Hmmm então a razão é provavelmente má implementação de arquivos mapeados na memória no Windows e não mal escrito Opera ou Antivir? Bem, há um ditado: quem usa o windows é culpado
Danubian Sailor
Não é realmente uma implementação ruim no Windows; Mais corretamente é mau uso pelo Opera Torrent. O Opera Torrent provavelmente não deve usar os manipuladores de arquivos mapeados na memória que já estão abertos neste caso, e fazer uma leitura direta do disco com o cache desativado. A parte complicada está no meu sistema (32GB de RAM), fazendo uma leitura em cache do arquivo de memória mapeada seria muito bem, e muito, Muito de mais rápido que um disco direto lido. O problema é que não há uma maneira fácil de saber automaticamente qual é o melhor para um determinado sistema.
Darth Android
@ ŁukaszLech - A implementação não é ruim. Você não tem memória suficiente para executar uma torrente, provavelmente baixando uma TONELADA de dados de uma só vez e liberando memória. Ajuste as configurações no cliente para baixar menos dados de uma só vez.
Ramhound
Manter a interface do usuário responsiva em face de alterações nas cargas do sistema é uma responsabilidade central de um sistema operacional de desktop. Ter um sistema que pode ser usado por 30 minutos não pode ser descrito de outra maneira que não seja uma falha nesta tarefa básica.
Kyle Jones
@KyleJones Como o Windows sabe que a ópera não precisa desse arquivo mapeado por memória para manter a interface do usuário responsiva? O Windows faz o possível para adivinhar o que você vai fazer em seguida e estar pronto, mas não faz isso às custas dos recursos do sistema. Meu sistema é executado por dias sem que eu abra o gerenciador de tarefas - não quero ~ 130MB de RAM reservada quando não estou usando. Levaria mais de 1 GB de RAM para garantir que o Windows Explorer fosse 100% responsivo, outro 1 GB para manter o kernel 100% responsivo a tudo o que o usuário pudesse fazer ... Isso é um muito de memória desperdiçada para proteger contra condições raras
Darth Android